java - 为什么在 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 文件?
解决方案
Intent
您正在使用的构造函数的第二个参数接受一个java.lang.Class
对象。SearchActivity::class
返回一个kotlin.reflect.KClass
。您可以java.lang.Class
通过访问它的java
属性来获得 a 。因此,您最终会遇到有点奇怪的SearchActivity::class.java
.
推荐阅读
- kotlin - Kotlin - 片段生命周期导航问题;为什么子片段成为当前目的地?
- javascript - 有空格的猫鼬 find() 字段
- python - 如何在 Python 中查看/保存对象的所有行?
- reactjs - 我想使用 RTL,但不是通过我的所有组件
- java - 如何在其他方法中使用项目路径?
- c - 尝试在 Visual Studio Code 上实现 C 代码时的一些问题
- c# - transform.LookAt(targetarget); 怎么不是看,而是照镜子?镜子
- automapper - Automapper throws System.ArgumentException Method T GetValue[T]() 是一个泛型方法定义(参数'method')
- c++ - 在 Windows 10 上构建 Vivek 的虚拟摄像头时出现链接器错误?
- minimax - Minimax 和 Negamax 有什么区别?