0

假设有一个活动,命名为活动 S。
然后会有很多活动,比如 10 个活动,命名为 A、B、C、...、J。

我怎样才能做到这一点:
从那些 A--J 活动中,当按下后退按钮时,总是返回到活动 S。
不管活动的顺序或创建方式如何。

例如:
从S开始,到B,再到D,再到G。
在活动G中,按返回键,会回到S。

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

4

2 回答 2

2

您可以根据您想要的确切结果以不同的方式完成此操作。您可以将以下行添加到您的<activity>标签manifest.xmlActivities

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堆栈中,我认为这不是您想要的,而只是另一种选择。您可能需要前两种方法中的一种。

于 2013-10-07T13:06:23.807 回答
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);
}
于 2013-10-07T13:06:41.013 回答