1

我有一些活动喜欢

A-> Splash Screen
B-> Home Screen
C-> a List activity
D-> a View activty
E-> a List activity
F-> a View activty

通常应用程序从 A -> B 开始

然后用户选择一个列表活动

然后用户从列表活动中选择一个视图。

我的问题是清除活动堆栈。

我的应用程序会将列表或查看活动跳转到活动(使用 facefook 样式导航)

例如,用户选择一个列表活动 C,然后选择查看活动 D。在开始点,用户可以跳转到活动 E。在活动 E 中,如果用户按下 o 后退按钮,则用户转到活动 D。

我想把它转到活动 B(Home)。

我的意思是我想在没有家庭活动的情况下清除活动状态。

我怎样才能做到这一点 ?。

抱歉英语太差了。

谢谢。

4

3 回答 3

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 标志Tasks and Back Stack Documentation

祝你今天过得愉快!

编辑:

如果您想在按下返回时关闭您的应用程序:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}
于 2012-05-28T21:07:56.207 回答
1

如果您希望用户从您的所有活动返回到 B,您可以finish()在调用任何 Intent 时从所有其他活动调用。这样,它们将从活动堆栈中删除。

此外,您可以覆盖后退按钮行为:

@Override
public void onBackPressed() {
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   startActivity(setIntent);
}

但要确保它真的是你想要的。因为看起来你在做一些对用户体验非常不利的事情。阅读有关活动堆栈和任务的更多信息。应避免覆盖后退按钮的默认行为。

于 2012-05-28T21:02:08.650 回答
1

您可以在 AndroidManifest.xml 文件中使用标记 android:noHistory="true" 来活动元素。此标签允许不在活动堆栈中写入活动。

于 2012-05-28T21:09:16.990 回答