在Android活动中自定义后台堆栈

时间:2013-10-07 13:01:05

标签: android

考虑有一个名为Activity S.的活动 然后会有许多活动,比如10项活动,名为A,B,C,......,J。

我怎样才能做到这一点:
从那些A-J活动中,当按下后退按钮时,总是返回到活动S.
无论订购或活动如何创建。

例如:
从S开始,转到B,然后是D,然后是G.
在活动G中,按后退按钮,然后返回S.

==编辑==
在离开所有A - J活动时,我应该使用Activity.finish()方法吗?

2 个答案:

答案 0 :(得分:2)

您可以根据您想要的确切结果以不同方式完成此操作。您可以将以下行添加到<activity> manifest.xml中的Activities代码中android:noHistory="true"

Intent

或在每个

中覆盖onBackPressed()时使用@Override public void onBackPressed() { Intent i = new Intent(CurrentActivity.this, S.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);` startActivity(i); super.onBackPressed(); } 标记
Activities

这将从堆栈中清除其他S并返回Activities

如果你想在返回S时将 @Override public void onBackPressed() { Intent i = new Intent(CurrentActivity.this, S.class); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);` startActivity(i); super.onBackPressed(); } 保留在堆栈上,那么你可以更改使用的标志

S

最后一种方法是将Activities放在前面并将另一个{{1}}保留在堆栈上,我认为这不是你想要的,而只是另一种选择。你可能会想要前两种方法中的一种。

答案 1 :(得分:1)

你必须这样做才能实现,设置一个标志,它将清除堆栈中的每个活动并将意图传递给S.class,就像这样

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();

    Intent intent=new Intent(this,S.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}