3

我有三个活动:A,B,C。活动A可以启动B或C。当A启动C时,我只需按下后退按钮即可返回A。但我想“返回”到 B,然后到 A(第二次按下后退按钮)。

我尝试以这种方式使用 TaskBackStack:

final TaskStackBuilder builder = TaskStackBuilder.create(this)
    .addParentStack(this)
    .addNextIntent(new Intent(this, B.class))
    .addNextIntent(new Intent(this, C.class));
builder.startActivities();

但它不起作用......有人可以帮助我吗?

对不起我的英语,提前谢谢

4

4 回答 4

3

覆盖活动 C 中的 onBackPressed 方法。

                @Override
                public void onBackPressed() {
                    super.onBackPressed();
                    //finish();
                        Intent intent = new Intent(ActivityC.this,ActivityB.class);
                        startActivity(intent);
                     }

如果你写完成,你可以去活动 A,因为你来自活动 A。这就是为什么使用意图。就像在活动 B 中一样。

@Override
public void onBackPressed() {
     super.onBackPressed();
     //finish();
     Intent intent = new Intent(ActivityB.this,ActivityA.class);
     startActivity(intent);
}

让我知道状态?

于 2012-11-14T12:50:37.490 回答
2

覆盖你的onKeyDown方法

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

            //Do stuff, like launching a new activity

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
于 2012-11-14T12:45:35.600 回答
1

使用 Activity Lifecycle进入此开始。您将对此有更好的了解。转到此在 Android 中从另一个调用一个 Activity。你会在谷歌上找到很多例子。试试看..例子之一

于 2012-11-14T12:52:50.827 回答
1

在尝试回答您的问题之前,我对您在活动之间导航的方法有一些评论。一般来说,这种方法不是一个好主意,因为这样做,您没有遵循 Android 导航模式,这会使您的应用程序对用户不友好,因为大多数 Android 应用程序都使用导航模式。

Android导航模式

时间导航,或历史画面之间的导航,深深植根于 Android 系统。所有 Android 用户都希望后退按钮将他们带到上一个屏幕,而不管其他状态如何。历史屏幕集始终植根于用户的 Launcher 应用程序(手机的“主”屏幕)。也就是说,按下 Back 足够多的时间应该会让你回到 Launcher,之后 Back 按钮将不会执行任何操作。

但是,使用 Android 模式在您的应用程序中导航还有另一种可能,但我相信这不是您问题的解决方案。你可以看看向上导航

最后,我有一个关于使用覆盖 OnBackPressed() 来启动新活动的解决方案的相关评论。你真的应该避免这种情况,因为使用它,你会让你的时间导航变得疯狂。因为当你在 OnBackPressed 内部创建一个 Activity 时,你总是在 Android Stack 上放置一个新的 Activity,所以这里有两个问题:

  1. 堆栈可以根据用户行为快速增长
  2. 很难摆脱你的应用程序(很难让你的堆栈变空)
于 2012-11-14T14:17:16.567 回答