3

在我的 Android 应用程序中,我试图确保在导航到某个活动时应始终将其放置在 backstack 的根目录中。

例如,用户启动 A->B->C->D 活动。成像 A - 初始屏幕(NoHistory = true),B - 主页,C,D - 一些详细信息页面。在详细信息页面 (D) 上,用户可以转到主要活动 (B)。让 BCD 后台用户按下“转到 B”按钮并导航到现有的主活动 (B),同时停止并销毁 C、D 活动。我将 SingleInstance 用于我的 B 活动,在这种情况下它工作正常。

我有这种情况对我不起作用。在初始屏幕上,我可以发现我应该跳过主页并直接转到详细信息页面之一(例如 D)。在这里,当我转到主页时,我的 backstack 是错误的:D-> B 而不仅仅是 B。

哪些标志或属性更适合我的情况。更新应用程序导航逻辑可能是更有效的方法吗?

感谢您的任何建议!

4

1 回答 1

2

在一个:

Intent intent = new Intent(B.class, this);
startActivity(intent);
finish(); //finish A behind you so you can only explicitly return to it

在 B 中,我猜有两种按钮方法可以让您到达 C 或 D:

public void buttonToC(View view){
    Intent intent = new Intent(C.class, this);
    startActivity(intent);
}

public void buttonToD(View view){
    Intent intent = new Intent(D.class, this);
    startActivity(intent);
}

在 C 和 D 中,如果您按下返回,您可以选择完成活动:

public void onBackPressed(){
    Intent intent = new Intent(B.class, this);
    startActivity(intent);
    finish(); // optional
}

所以 A -> B 和 A 完成。从 B -> C OR D 但 B 仍在后台运行。在 C 或 D 中时,按返回会调出后台活动 B。这应该可以工作。

于 2013-10-23T18:45:53.810 回答