gpt4 book ai didi

java - finishActivity() 在 Android 中未按预期工作

转载 作者:行者123 更新时间:2023-12-01 10:05:27 26 4
gpt4 key购买 nike

以下场景:

我有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com