Tag: 安卓

Kotlin集合在Android上抛出ClassNotFoundException

当在Android上运行应用程序时,使用下面的任何一行都会引发ClassNotFoundException。 val list = listOf("a", "b") val arrayList = arrayListOf("a", "b") val map = mapOf("key" to "value") 例外: 04-28 15:12:00.770 27326-27326/com.example.kotlin E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.kotlin, PID: 27326 java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/collections/CollectionsKt; at com.example.kotlin.MainActivity.onCreate(MainActivity.kt:17) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at […]

Kotlin自定义是否获得执行方法调用

为了增加对SharedPreferences.Editor的调用的可读性,我希望每次需要一个新的SharedPreferences.Editor时,使用一个Kotlin变量来执行“getSharedPreferences.edit()”。 最初我打算使用这样的东西: val editPreferences: SharedPreferences.Editor = Application.getSharedPreferences("preferences", Context.MODE_PRIVATE).edit() 但后来我被告知,'editPreferences'将保持对同一个编辑器的引用,当我每次调用'editPreferences'时我真正想要它创建一个新的编辑器。 如果使用自定义getter,每次都会返回一个新的编辑器? 像这样的东西: val editPreferences: SharedPreferences.Editor get() = Application.getSharedPreferences("preferences", Context.MODE_PRIVATE).edit() 仍然起床和Kotlin运行,我不知道如果get()方法将持有引用编辑器,而不是创建一个新的。

Kotlin对象超类型构造器

我需要在kotlin中实现一个单例MyClass 。 要求: MyClass有超类SuperClass ,我需要调用Superclass的构造函数 我需要将一个上下文传递给MyClass并需要上下文来调用Superclass的构造函数。 MyClass是一个单身人士。 Java等价物: class MyClass extends SuperClass { // instance variable // getInstance() method MyClass(Context context) { super(context); } } 我试图解决这个object但没有得到它的工作。 有没有办法让它与一个对象的工作,或者我必须使用companion object ?

Kotlin协程CalledFromWrongThreadException

我正在尝试使用Kotlin协同程序在后台执行一些繁重的工作。 但是我得到了这个错误信息, 'android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图。 fun setList() { media_image_list.adapter = imageListAdapter … launch { val images = getImages(galleryPath) imageListAdapter.setItems(images) } } suspend private fun getImages(): MutableList<Image> { val uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI … } 如何使它在正确的背景下运行?

Kapt,Kotlin,Dagger2批注处理时出错

在使用kotlin在项目中添加com.google.dagger:dagger-android-support依赖项后,我收到了这个gradle错误。 这是我构建gradle build.gradle的一部分 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'realm-android' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'kotlin-kapt' android { … kapt { generateStubs = true } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) … kapt "com.google.dagger:dagger-compiler:${daggerVersion}" kapt "com.google.dagger:dagger-android-processor:${daggerVersion}" compile "com.google.dagger:dagger:${daggerVersion}" compile "com.google.dagger:dagger-android-support:${daggerVersion}" … } 这里是我得到的gradle错误 […]

在kotlin使用房间作为单身人士

我试图使用房间作为单身人士,所以我不必调用Room.databaseBuilder() – 这是昂贵的不止一次。 @Database(entities = arrayOf( Price::class, StationOrder::class, TicketPrice::class, Train::class, TrainCategory::class ), version = 2) @TypeConverters(Converters::class) abstract class AppDatabase : RoomDatabase() { abstract fun dao(): TrainDao companion object { fun createDatabase(context: Context): AppDatabase = Room.databaseBuilder(context, AppDatabase::class.java, "trains.db").build() } } 注意: 因为Room需要使用abstract class所以不能使用Object。 单例必须是线程安全的,因为多个线程可以同时访问它。 必须能够把Context作为一个参数。 我已经看过所有类似的StackOverflow问题,并没有满足我的要求 在Kotlin中有论点的单身人士 不是线程安全的 Kotlin – 在Android中转换Singleton DatabaseController的最佳方法 是线程安全的 Kotlin线程保存与参数 使用对象的 本地懒惰单例

为什么智能铸造错误发生在kotlin?

如何写这个JAVA代码 FloatingActionButton floatingButton; 在kotlin我做了类似的事情 private var floatingButton:FloatingActionButton?= null 但gettting智能转换错误。

安装Kotlin Android项目失败INSTALL_FAILED_DEXOPT

尝试使用Android Studio运行Kotlin Android项目成功编译并生成APK,但是当Studio试图在设备上安装APK时,安装将失败,并显示INSTALL_FAILED_DEXOPT 。 通过logcat看,我可以看到类似于以下消息: 12-13 22:43:57.219: ERROR/dalvikvm(1623): Out-of-order method_idx: 0x2bff then 0x2bff 12-13 22:43:57.219: ERROR/dalvikvm(1623): Trouble with item 897 @ offset 0x13e498 12-13 22:43:57.219: ERROR/dalvikvm(1623): Swap of section type 2006 failed 12-13 22:43:57.219: ERROR/dalvikvm(1623): ERROR: Byte swap + verify failed 12-13 22:43:57.230: ERROR/dalvikvm(1623): Optimization failed 该项目使用Kotlin IDEA插件的自动转换从Java转换而来。 没有编译器警告。

Kotlin与Java混合错误:无法找到符号

我是kotlin的新手,所以我开始克隆https://github.com/Kotlin/kotlin-koans存储库来学习这个新的languange。 我已经安装kotlin插件,并尝试与Android项目之前ray-wenderlich教程,它的工作正常(我不能发布超过2个链接呢。) 所以当我克隆kotlin-koans并尝试在第一次运行它时,我得到了: 截图 我试图在互联网上搜索。 但似乎我仍然无法找到解决方案。 这是gradle.build buildscript { ext.kotlin_version = '1.1.0' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' sourceSets { main.java.srcDirs += 'src' test.java.srcDirs += 'test' } repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile 'com.google.guava:guava:16.0' testCompile 'junit:junit:4.12' } 而当我使用终端运行测试时,这是发生了什么事情。 D:\kotlin-koans>gradlew test :compileKotlin e: java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context at […]

如何将Java源文件的一部分转换为Kotlin?

在我的Kotlin项目中,我有一些Java代码要转换成Kotlin。 将Java文件转换为Kotlin的菜单项被禁用,因为它不是我想要转换的整个文件。 如何将Java代码转换为Kotlin?