即使在启动新 activity 并清除返回堆栈后,仍保留根 activity
Keep the root activity even after starting new activity and clearing the back stack
我将开始以下系列活动:
A->B->C->D
现在我想启动另一个 activity 假设 E 来自 D 并清除堆栈但保留 activity A 作为根 activity。
在启动 E 之后,堆栈应该是 A->E。我怎样才能做到这一点?
当你开始时 activity E 从 D 首先清除标志顶部或 finishAffinity()。所以你之前的所有 activity 都关闭了。并首先从 backpress 打开 activity。
在E中添加OnBackPressed方法Activity。
喜欢这个
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplicationContext(), AActivity.class);
startActivity(intent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}
您可以通过 TaskStackBuilder 实现。这个家伙可以让你重建你需要的堆栈。你需要这样的东西:
final Intent activityAIntent = new Intent(this, ActivityA.class);
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
TaskStackBuilder.create(this)
.addNextIntent(activityAIntent)
.addNextIntent(new Intent(this, ActivityE.class))
.startActivities();
我将开始以下系列活动:
A->B->C->D 现在我想启动另一个 activity 假设 E 来自 D 并清除堆栈但保留 activity A 作为根 activity。 在启动 E 之后,堆栈应该是 A->E。我怎样才能做到这一点?
当你开始时 activity E 从 D 首先清除标志顶部或 finishAffinity()。所以你之前的所有 activity 都关闭了。并首先从 backpress 打开 activity。
在E中添加OnBackPressed方法Activity。
喜欢这个
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplicationContext(), AActivity.class);
startActivity(intent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}
您可以通过 TaskStackBuilder 实现。这个家伙可以让你重建你需要的堆栈。你需要这样的东西:
final Intent activityAIntent = new Intent(this, ActivityA.class);
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
TaskStackBuilder.create(this)
.addNextIntent(activityAIntent)
.addNextIntent(new Intent(this, ActivityE.class))
.startActivities();