考虑有一个名为Activity S.的活动 然后会有许多活动,比如10项活动,名为A,B,C,......,J。
我怎样才能做到这一点:
从那些A-J活动中,当按下后退按钮时,总是返回到活动S.
无论订购或活动如何创建。
例如:
从S开始,转到B,然后是D,然后是G.
在活动G中,按后退按钮,然后返回S.
==编辑==
在离开所有A - J活动时,我应该使用Activity.finish()
方法吗?
答案 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);
}