Activity1(未完成)可以启动Activity2,Activity2(未完成)可以启动Activity3。 Activity2和3可以使用
返回到之前的活动super.onBackPressed();
this.finish();
我想知道Activity3如何直接返回Activity1( 不刷新 )并释放Activity2的内存?
答案 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();
}
}
当设置结果时,这将完成第二个活动。否则,您可以像任何正常活动一样来回导航。