我想将活动名称存储在一个变量内,并在另一个活动中调用此变量以打开新活动,即
var targetActivity: Activity? = null
button1.setOnClickListener(){
targetActivity = ActivityA()
}
button2.setOnClickListener(){
targetActivity= ActivityB()
}
在另一项活动中,我将检查此变量并让其成为职员:
buttonFromAnotherActivity.setOnClickListener(){
val intent = Intent(this, targetActivity::class.java)
startActivity(intent)
}
问题是,buttonFromAnotherActivity通过单击上次打开的活动(“视图层次结构”中的底部一个活动)的按钮单击来存储值,即使我通过使用先前分配的活动名称从先前打开的活动中单击按钮来重新分配它,也不会更改回去。为什么不回到先前分配的值?我认为它存储了最后一个值,并且如果活动名称不是新的东西,它也不会更改。但是为什么呢?
此外,此检查无效:if (targetActivity == ActivityA()) { do this }
为什么?
为此,您必须使用AppcompactActivity对象。
[Step-1:像这样创建一个功能,有助于从一个屏幕重定向到另一个屏幕。
fun GoFrom(sourceActivity: Context, destinationActivity: AppCompatActivity) {
val intent = Intent(sourceActivity, destinationActivity.javaClass)
sourceActivity.startActivity(intent)
}
Step-2:然后在onclick方法中调用上述方法。
GoFrom(LoginActivity.this, destinationActiovity())
finish()
因此,用var targetActivity: AppCompatActivity? = null
替换您的代码,也请将该行替换为val intent = Intent(this, targetActivity.javaClass)
。