以下场景:
我有 4 项 Activity ,A、B1、B2 和 C
Activity A 通过以下方式调用 B1:
public void toB1(View view)
{
Intent b1 = new Intent(this, B1Activity.class);
startActivityForResult(b1, 2);
}
Activity B1 通过以下方式调用 B2:
public void toB2(View view)
{
Intent b2 = new Intent(this, B2Activity.class);
startActivity(b2);
}
然后,当 B2 完成其工作时,它应该调用 C 并通过以下方式关闭 B1 和 B2:
public void toC(View view)
{
Intent c = new Intent(this, CActivity.class);
finish();
finishActivity(2);
startActivity(c);
}
但是现在,当我在 C 处单击返回键时,我会被定向到 B1 而不是 A。
但是B1应该完成了,我的代码是否有错误或者我误解了startActivityForResult
的概念?
最佳答案
我解决了这个问题,如下所示,您必须创建Singleton
,
B1Activity.java
public static B1Activity instance = null; //declare it global
并以这种方式开始 Intent 。
public void onClick(View v) {
Intent b2 = new Intent(B1Activity.this, B2Activity.class);
startActivity(b2);
}
并创建这个方法
@Override
public void finish() {
super.finish();
instance = null;
}
现在在B2Activity.java中使用此代码。
public void onClick(View v) {
Intent c = new Intent(B2Activity.this, CActivity.class);
if(B1Activity.instance != null){
B1Activity.instance.finish();
}
B2Activity.this.finish();
c.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(c);
}
关于java - finishActivity() 在 Android 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514722/