Android:回到一些活动

时间:2012-12-20 09:55:45

标签: android android-activity

enter image description here

Activity1(未完成)可以启动Activity2,Activity2(未完成)可以启动Activity3。 Activity2和3可以使用

返回到之前的活动
super.onBackPressed();
this.finish();

我想知道Activity3如何直接返回Activity1( 不刷新 )并释放Activity2的内存?

5 个答案:

答案 0 :(得分:3)

Intent intent = new Intent(Activity3.this, Activity1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这会使Activity1位于Backstack的顶部,在其上方杀死所有Activities。希望这会有所帮助。

答案 1 :(得分:0)

试试这个

@Override
 public void onBackPressed() {
     startActivity(new Intent(this, UI.class)
     .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
 return;
}

答案 2 :(得分:0)

尝试super.finish();关闭第二项活动。

答案 3 :(得分:0)

如果您想返回现有活动,可以使用唯一ID和onActivityResult,如果resultData == ID - >关闭第二个活动(对于用户来说,它似乎从第三个活动回到第一个活动)。

要了解有关活动堆栈的更多信息,请访问google site

也许fragments也适合你 - 你可以简单地遍历片段堆栈。

答案 4 :(得分:0)

活动2

Intent intent = new Intent(Activity2.this, Activity3.class);
startActivityforResult(intent,0);

从Activity3返回时覆盖onBackPressed()并在需要时设置结果

setResult(RESULT_CANCELED);

然后覆盖Activity2中的onActivityResult()

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 0) {
            if(resultCode == RESULT_CANCELED)
                finish();
        }
    }

当设置结果时,这将完成第二个活动。否则,您可以像任何正常活动一样来回导航。