我有一些活动喜欢
A-> Splash Screen
B-> Home Screen
C-> a List activity
D-> a View activty
E-> a List activity
F-> a View activty
Normaly应用程序以A - >开头乙
然后用户选择列表活动
然后用户从列表活动中选择一个视图。
我的问题是清除活动堆栈。
我的应用程序将跳转列表或查看活动到活动(使用facefook样式导航)
例如,用户选择列表活动C而不是选择查看活动D.在帽点处,用户可以跳转到活动E.在活动E中,如果用户按下o后退按钮,则用户转到活动D.
我想要去活动B(Home)。
我的意思是ı想要明确没有家庭活动的活动。
怎么能这样做?。
sory for awasome English。
感谢。
答案 0 :(得分:2)
你可以像这样拦截后退按钮:
@Override
public void onBackPressed() {
// You want to start B Activity
Intent a = new Intent(this, B.class);
// But you dont want it on top of E.
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Launching this will now remove every activity on top of B and bring B to front, not! relaunch it.
startActivity(a);
}
您可能需要查看Android Intent flags和Tasks and Back Stack Documentation。
度过美好的一天!
修改强>
如果您想在按下后退时关闭应用程序:
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
答案 1 :(得分:1)
如果您希望用户从您的所有活动返回到B,则可以在呼叫任何意图时从其他所有活动中呼叫finish()
。这样,它们就会从活动堆栈中删除。
此外,您可以覆盖后退按钮的行为:
@Override
public void onBackPressed() {
Intent setIntent = new Intent(Intent.ACTION_MAIN);
startActivity(setIntent);
}
但要确保它真的是你想要的。因为看起来你正在做一些非常糟糕的用户体验。阅读有关acitivty堆栈和任务的更多信息。应避免覆盖后退按钮的默认行为。
答案 2 :(得分:1)
您可以对AndroidManifest.xml文件中的活动元素使用标记android:noHistory =“true”。此标记允许不在活动堆栈中写入活动。