Android:使用FLAG ACTIVITY CLEAR TOP尚未完成上一个活动

时间:2019-03-06 05:28:05

标签: java android android-intent

我是Android编程的新手,所以我可能会错过一些重要的事情。

我想要做的是完成当前活动(ActivityB)和上一个活动(ActivityA)。 用户可以使用FLAG_ACTIVITY_REORDER_TO_FRONT在ActivityA和ActivityB之间切换。现在,我要完成ActivityB和上一个ActivityA并开始新的ActivityA

但是,即使完成ActivityA之后,上一个ActivityB仍在运行。

代码是这样的。

ActivityA

private void startActivityB() {
          Intent intent =
                    new Intent(ActivityA.this, ActivityB.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            startActivity(intent);
}

ActivityB

private void exitActivityB() {
                       Intent intent =
                        new Intent(ActivityB.this, ActivityA.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
}

@Override
private void onBackPressed() {
        // finish ActivityB and the previous ActivityA
        Intent intent =
                new Intent(ActivityB.this, ActivityA.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);

}

我这有什么问题?如何完成上一个ActivityA并开始新的ActivityA

3 个答案:

答案 0 :(得分:1)

尝试以下方式

Intent i = new Intent(ActivityB.this, ActivityA.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);

答案 1 :(得分:0)

尝试这个:

@Override
private void onBackPressed() {
        // finish ActivityB and the previous ActivityA
        Intent intent =
                new Intent(ActivityB.this, ActivityA.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
}

答案 2 :(得分:0)

尝试此代码

Intent i = new Intent(ActivityB.this, ActivityA.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK |Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i); 
finish();