我有MapActivity的一个孩子的活动。 class RecordingActivity : MapActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d(“RecirdingActivity”, “InitializeMap”) //called } override fun getView(): Int { return R.layout.activity_recording } } 我从我的主要活动中调用这个活动: fab.setOnClickListener { Log.d(“MainActivity”, “fabClick”) //called startActivity(intentFor()) } 我有抽象活动: abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback { override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCreate(savedInstanceState, persistentState) setContentView(getView()) initializeMap() Log.d(“MapActivity”, “InitializeMap”)//not called } […]
我正在使用Android Studio 3.0 Beta 7编译Android项目,使用Kotlin 1.4-2和Room Persistence Library 1.0.0-beta1。 这是我的Gradle文件的一部分,我添加了房间依赖关系: implementation “android.arch.persistence.room:runtime:1.0.0-beta1” kapt “android.arch.persistence.room:compiler:1.0.0-beta1” 编译时,我收到以下错误: 警告:警告:注释处理器“android.arch.persistence.room.RoomProcessor”支持的源版本“RELEASE_7”小于“源1.8” 添加stacktrace /调试标志来编译选项后,这是我得到的错误: 错误:org.jetbrains.kotlin.kapt3.diagnostic.KaptError:批注处理时出错 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]失败:生成失败,出现exception。 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] *什么错误:10:08:03.727 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]执行失败的任务’:app:kaptDebugKotlin’。 10:08:03.727 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]>内部编译器错误。 10:08:03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 10:08:03.728 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:10:08 :03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException:任务’:app:kaptDebugKotlin’的执行失败。 10:08:03.728 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)10:08:03.728 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] […]
我试图理解关键字关键字的目的,显然它允许我们对generics进行思考 。 但是,当我离开它时,它工作得很好。 任何人都在意解释什么时候会产生实际的差异 ?
我有这个方法。 private fun getOffer(offers: OfferRepresentation, type: OfferType): ???? { return when (type) { OfferType.ADDON -> offers.addon OfferType.SALE -> offers.sale OfferType.PLAN -> offers.plan OfferType.CUSTOMPLAN -> offers.customPlan } 我怎样才能改变这种方法来返回正确的types?
函数的默认参数值是否可以从函数扩展或其他任何地方访问? fun DieRoll.cheatRoll():Int = roll(min = max -1) fun roll(min: Int = 1, max: Int = 6): Int = (min..max).rand()
在Android开发中,当且仅当设备的SDK大于或等于最小版本时,才需要执行一段代码。 为了避免这个代码的往往丑陋和重复的性质,我创建了下面的扩展。 inline fun runWithMinSdk (minVersion: Int, func: () -> T) { if (android.os.Build.VERSION.SDK_INT >= minVersion) { func() } } 没有什么太花哨,似乎在纸上做的伎俩。 但是 ,当我使用这样的代码: fun myFun { runWithMinSdk(Build.VERSION_CODES.O) { exampleMethodThatRequiresOreo() } } Android Studio引发了一个hissy fit,它失败了Lint检查,要么抑制myFun() ‘NewApi’警告,要么包装runWithMinSdk块if android.os.Build.VERSION.SDK_INT … etc 有没有更好的方式来实现这个function,使其通过林特检查或使用扩展是不可能的这是可能的吗?
我怎样才能调用超级的扩展function? 例如: open class Parent { open fun String.print() = println(this) } class Child : Parent() { override fun String.print() { print(“child says “) super.print() // syntax error on this } }
下面的代码可以很好地工作,但fun addDetail(…)的代码太复杂了,有没有一种简单的方法来做到这一点? 谢谢! BTW, fun addDetail(…) , aMListDetail可能为null,而aMListDetail?.innerListDetail可能为null。 data class MDetail ( val _id: Long ) class DetailsHandler(mContext: Context = UIApp.instance) { data class MListDetail(val innerListDetail: MutableList) private var aMListDetail: MListDetail? var mJson: String by PreferenceTool(mContext,”mySavedJson”, “”) init { aMListDetail= Gson().fromJson(mJson,MListDetail::class.java) } fun addDetail(aMDetail:MDetail){ if (aMListDetail==null){ aMListDetail=MListDetail(mutableListOf(aMDetail)) }else{ if (aMListDetail?.innerListDetail==null){ aMListDetail=MListDetail(mutableListOf(aMDetail)) }else { aMListDetail?.innerListDetail?.add(aMDetail) } […]
你能帮我按照下面的json分组,并根据与RxKotlin的日期在kotlin中返回一个hashMap吗? 对于kotlin来说非常简单,但对于Rxkotlin来说真的很困难。 谢谢 val groupedTransactions = accountTransactions.transactions?.groupBy {it.effectiveDate} “transactions”: [{ “id”: “44e5b2bc484331ea24afd85ecfb212c8”, “effectiveDate”: “20/07/2017”, “description”: “Kaching TFR from JOHN CITIZENxmas donation”, “amount”: 12.00 }, { “id”: “1506aeeb8c3a699b1e3c87db03156428”, “effectiveDate”: “20/07/2017”, “description”: “Wdl ATM CBA ATM CIRCULAR QUAY STATION NSW 221092 AUS”, “amount”: -200.00, “atmId”: “129382” }, { “id”: “9a899bfd978511e9605774e1d5222b67”, “description”: “Savings”, “effectiveDate”: “19/07/2017”, “amount”: 10.00 }, […]
在更改视图的types之后,存在构建错误,该variables仍旧是旧types。 我如何强制Android Studio刷新/重新生成当前types的variables? 例如, and in code myView.setImage = someImage 现在,我在XML编辑器中更改该types, 现在这行会导致像myView这样的错误没有“setImage”方法,因为它仍然认为myView是一个TextView。 myView.setText(some text);