首页 > 解决方案 > 为什么在 Kotlin 中启动新的 Android 活动需要 Java 类?

问题描述

如果我想在 Android 中启动一个新的 Activity,我需要将 Activity 传递给一个 Intent。但是,不仅仅是像这样传递 Kotlin 类:

val intent: Intent = Intent(this, SearchActivity::class)

我需要像这样将 Kotlin 类作为 Java 类传递:

val intent: Intent = Intent(this, SearchActivity::class.java)

为什么我需要添加这个额外的标识符,因为 mySearchActivity是一个 .kt 文件?

标签: javaandroidandroid-intentandroid-activitykotlin

解决方案


Intent您正在使用的构造函数的第二个参数接受一个java.lang.Class对象。SearchActivity::class返回一个kotlin.reflect.KClass。您可以java.lang.Class通过访问它的java属性来获得 a 。因此,您最终会遇到有点奇怪的SearchActivity::class.java.


推荐阅读