里面onResume()我重新创建活动如果条件匹配, this@MainActivity.recreate() 这在onCreate()内执行下面的代码, val infoFragment = ListPagerFragment() val fragmentManager = this@MainActivity.getSupportFragmentManager() fragmentManager.beginTransaction().replace(R.id.container_body, infoFragment).addToBackStack(“infoFragment”).commit() 这个片段事务在第一个Activity创建时运行良好。 但是,重新创建时,我收到错误 – java.lang.IllegalStateException: Fragment no longer exists for key f0: index 0 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3971) at android.app.ActivityThread.access$900(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5333) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) at dalvik.system.NativeStart.main(Native Method) *这个机制在java中运行良好我猜是因为我把代码改成了kotlin而不是逻辑 […]
我有searchView 我想在按下提交按钮时添加自定义操作。 但是我所能得到的就是 searchBar.setOnSearchClickListener { //do some stuff } 我发现的所有信息都是旧的,而不是来自kotlin lang。 当键盘上的搜索图标被录音时,我怎样才能触发一个动作?
我正在认真考虑在一个绿色的Android项目上使用Kotlin,但是我担心的是敲门声,其中最重要的是API级别的最低要求。 在其他平台上,新语言需要特定的操作系统版本(例如需要iOS 7的Swift),我想知道这里是否有类似的需求? 我一直在搜索各种Kotlin / Android的常见问题和Stackoverflow,但一直没能find这个信息。
我是Kotlin的初学者,能告诉我Kotlin的Code A和Code B有什么不同吗? 谢谢! 代码A class Person(val firstName: String, val lastName: String, var age: Int){ } 代码B class Person(firstName: String, lastName: String, age: Int){ }
10:57:54 AM Plugin Error: Kotlin threw an uncaught UnsupportedOperationException. Disable Plugin 10:57:54 AM UnsupportedOperationException: null 看到Kotlin插件得到exception的时候遇到了Android studio显示的java stackframe。 更新:我很久以前更新了kotlin,但Exception仍然存在。 (不知道降价的原因) 我想也许在gradle构建文件的ext version仍然使用beta版本,我会尝试更改gradle中的版本 解决了 其实它是与gradle build file关联的,IDE错误只会让我更新IDE的插件,而不是kotlin扩展本身。 更改buildscript ext.kotlin_version = ‘1.0.0-beta-4589’ ,问题就消失了
我正在使用Kotlin编写一些与Java的reflectionAPI一起工作的东西。 我的输入是一个Class ,我需要决定这个types是double还是integer,但是我需要同时支持Java使用的原始types和可装箱的可空types。 这个玩具的例子做我想做的事情: when(type) { java.lang.Double::class.java, Double::class.java -> TypesEnum.DOUBLE java.lang.Integer::class.java, Int::class.java -> TypesEnum.INT else -> throw IllegalArgumentException(“type”) } 但是,这种方法会从Kotlin编译器中产生以下警告: 警告:(22,13)Kotlin:Kotlin不应该使用这个类。 使用kotlin.Double代替。 警告:(23,13)Kotlin:Kotlin不应该使用这个类。 改用kotlin.Int。 但是, Int?::class.java是一个语法错误, 在先前的问题中提出的方法需要KClass而不是Class (并且.kotlin扩展方法在我的一些输入上崩溃)。 什么是正确的Kotlin方式来执行这种检查? 编辑:进一步的调查(由@ voddan的答案提示)已经显示,这个问题是Kotlin的typesreflection更古怪的一个怪异的症状: fun main(args: Array) { // ::class.java of Kotlin’s own Double type is just double println(Double::class) // -> class kotlin.Double println(Double::class.java) // -> double // […]
当我尝试使用Kotlin的架构组件时,我得到一个奇怪的编译器错误。 Gradle输出: Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar] Configuration on demand is an incubating feature. Configuration ‘compile’ in project ‘:app’ is deprecated. Use ‘implementation’ instead. Configuration ‘androidTestCompile’ in project ‘:app’ is deprecated. Use ‘androidTestImplementation’ instead. Configuration ‘testCompile’ in project ‘:app’ is deprecated. Use ‘testImplementation’ instead. ‘kapt.generateStubs’ is not used by the ‘kotlin-kapt’ plugin ‘kapt.generateStubs’ is not […]
我试图使用kotlin协同程序通过这里描述的方法访问房间数据库,添加了插件和依赖项,并启用了gradle中的kotlin协程。 在gradle文件中: kotlin { experimental { coroutines ‘enable’ } } dependencies { implementation “org.jetbrains.kotlinx:kotlinx-coroutines-core:0.21” …} 所以我为dao类中的所有方法添加了suspend关键字,如下所示: 道class @Query(“select * from myevent”) suspend fun all(): List @Delete suspend fun deleteEvent(event: MyEvent) … 并建立,然后得到这些错误 错误 e: C:\Users\projectpath\app\build\tmp\kapt3\stubs\debug\com\robyn\myapp\data\source\local\EventsDao.java:39: error: Deletion methods must either return void or return int (the number of deleted rows). public abstract java.lang.Object deleteEventById(@org.jetbrains.annotations.NotNull() ^ […]
在Kotlin中实现Hadoop Mapper或Reducer时,我从编译器中得到一个有趣的矛盾。 任何时候使用Context对象,如果你不提供types参数( ),并且说“没有types参数”,编译器会给出一个错误, DO提供types参数。 任何想法发生了什么? 一个例子: // gives “4 type arguments expected” override fun setup(context: Context?) { super.setup(context) } // gives “No type arguments expected” override fun setup(context: Context?) { super.setup(context) } 指定Mapper.Context使其编译,但由于Context是Mapper的内部类,因此当指定要扩展的Mapper的types时,不应该隐含Context的types,像在Java中一样?
我已经在Kotlin中编写了一个Java库,我想将它编译成Java和Kotlin应用程序可用的jar。 这个想法是,jar应该能够在Java项目和Kotlin项目上工作。 做一个简单的./gradlew clean assemble生成一个jar,当我检查jar时,我可以看到几个导入不包含在普通的Java应用程序也不能访问的jar中: import jet.runtime.typeinfo.JetValueParameter; import kotlin.jvm.internal.Intrinsics; import kotlin.jvm.internal.KotlinClass; import kotlin.jvm.internal.KotlinClass.Kind; import kotlin.jvm.internal.KotlinSyntheticClass; import kotlin.jvm.internal.KotlinSyntheticClass.Kind; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 我怎么能包括在jar中的上述依赖项? 现在这个jar子只有30kb。 我宁愿不必包含整个Kotlin运行时,但只能在使用的组件中编译。