如何在android Kotlin中获取以前的活动
假设我的默认活动是MainActivity,我在MainActivity中不使用finish启动另一个活动DepositActivity 现在,如何访问DepositActivity中的MainActivity实例 现在,我如何访问DepositActivity中的MainActivity实例 无法在其他活动中访问一个活动实例的AIK 如果您有这种类型的需求,请尝试使用 现在,我如何访问DepositActivity中的MainActivity实例 无法在其他活动中访问一个活动实例的AIK 如果您有这种类型的需求,而不是尝试使用进行管理,则需要在MainActivity中声明为伴随对象变量和方法。静态类型的变量和方法在Kotlin中声明为伴生对象 看看下面的例子 在MainActivity中声明变量和方法如何在android Kotlin中获取以前的活动,android,kotlin,Android,Kotlin,假设我的默认活动是MainActivity,我在MainActivity中不使用finish启动另一个活动DepositActivity 现在,如何访问DepositActivity中的MainActivity实例 现在,我如何访问DepositActivity中的MainActivity实例 无法在其他活动中访问一个活动实例的AIK 如果您有这种类型的需求,请尝试使用 现在,我如何访问DepositActivity中的MainActivity实例 无法在其他活动中访问一个活动实例的AIK 如果
val value : String = "hello from Main"
companion object {
lateinit var instance : MainActivity
fun getInstancem() : MainActivity {
return instance
}
}
使用此实例并在存款活动中打印值,如
您可以看到日志消息
希望这能给您一些提示。您需要在MainActivity中声明为伴随对象变量和方法。静态类型的变量和方法在Kotlin中声明为伴生对象
看看下面的例子
在MainActivity中声明变量和方法
val value : String = "hello from Main"
companion object {
lateinit var instance : MainActivity
fun getInstancem() : MainActivity {
return instance
}
}
使用此实例并在存款活动中打印值,如
您可以看到日志消息
希望这能给你提示
如果要从DepostActivity检索某些结果,请使用startActivityForResult…,DepostActivity::class.java方法。在MainActivity override onActivityResult方法中:
在DepostActivity中,您需要在完成DepostActivity之前使用方法setResult设置数据
如果要将某些数据传递给DepositorActivity,请使用intent,例如:
val intent = Intent(this, DepositActivity::class.java)
intent.putExtra("Extra_Name", /*Some Data*/)
startActivity(intent)
不推荐:使用对MainActivity的静态引用不要忘记在onDestroy方法中删除它:
在DepositActivity中,您可以如下方式访问它:
MainActivity.instance?./* call some method or property */
但您不应该依赖于onDestroy的调用,因为这样可能会导致内存泄漏
如果要从DepostActivity检索某些结果,请使用startActivityForResult…,DepostActivity::class.java方法。在MainActivity override onActivityResult方法中:
在DepostActivity中,您需要在完成DepostActivity之前使用方法setResult设置数据
如果要将某些数据传递给DepositorActivity,请使用intent,例如:
val intent = Intent(this, DepositActivity::class.java)
intent.putExtra("Extra_Name", /*Some Data*/)
startActivity(intent)
不推荐:使用对MainActivity的静态引用不要忘记在onDestroy方法中删除它:
在DepositActivity中,您可以如下方式访问它:
MainActivity.instance?./* call some method or property */
但您不应该依赖于onDestroy的调用,因为这样可能会导致内存泄漏
你能举个例子吗,为什么你想有一个活动的实例?我问的原因是,考虑到后台活动可能处于未定义状态,可能已被系统破坏,等等,这听起来像是泄漏。检查此链接->//创建了一个静态变量伴生对象{}@MarošŠeleng感谢你成为这里的理性之声。你能提供一个例子吗?你为什么希望有一个这样的活动的例子?我问的原因是,考虑到后台活动可能处于未定义状态,可能已被系统破坏,等等,这听起来像是泄漏。检查此链接->//创建了一个静态变量伴生对象{}@MarošŠeleng感谢你在这里发表理性的声音。我很高兴你用粗体字写了“不推荐”,但我的意见是你根本不应该发布它。此外,您不应该依赖于onDestroy被调用,因为,因此StaticFieldLeak lint警告您将被抑制。我很高兴您将not Recommendable放在粗体中,但我的意见是您根本不应该发布它。此外,您不应该依赖于调用onDestroy,因为这样会导致StaticFieldLeak lint警告被抑制。