使用返回栈启动Activity

7

我正在尝试启动一个活动,并同时正确地维护后退堆栈,以允许用户使用后退按钮。为此,我遵循 Google 的 说明,但一无所获。当我点击我的按钮时,除了日志输出外,什么也没有发生。我需要做什么来启动下一个活动?

        mBtnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Log.d(TAG, "click");

                Intent intent = new Intent(ProfileSelectActivity.this, PermissionsRequestActivity.class);

                PendingIntent pendingIntent =
                        TaskStackBuilder.create(ProfileSelectActivity.this)
                                // add all of DetailsActivity's parents to the stack,
                                // followed by DetailsActivity itself
                                .addNextIntentWithParentStack(intent)
                                .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

                NotificationCompat.Builder builder = new NotificationCompat.Builder(ProfileSelectActivity.this);
                builder.setContentIntent(pendingIntent);
            }
        });

我觉得最后少了一行代码。我尝试了startActivities();, startActivity();等其他方法,但是所有的尝试都失败了。
谢谢任何帮助。
编辑
尝试实现njzk2下面的建议,但我仍然感到困惑。为了在TaskStackBuilder行的末尾添加startActivities(),我必须删除对PendingIntent的任何赋值。这可能没问题。然而,在下一个活动开始后,如果我按返回按钮,就只会得到一个白屏。
TaskStackBuilder.create(ProfileSelectActivity.this)
    .addNextIntentWithParentStack(intent)
    .startActivities();

我还注意到,当通过返回按钮返回时,父活动中的onResume方法没有被调用,所以这可能只是恢复状态的问题?

这里有一些信息上的矛盾。你说你想要实现一个“后退堆栈”,但是提供的代码却是一个“实际按钮”。那么,到底是哪个呢?你想要一个后退堆栈,也就是当用户按下手机上的返回(硬件或软件)按钮时触发的功能?还是你想要在用户按下应用程序中的某个按钮时执行某些操作? - iheanyi
根据文档,对于这种情况您无需做任何操作。如果您从活动A中的按钮启动活动B,则按下返回键将自动带您回到活动A。 - iheanyi
这是我认为的,但当我点击返回时只会得到一个白屏,所以我正在尝试更明确的措施。 - AndroidDev
1
阅读此链接:https://developer.android.com/guide/components/tasks-and-back-stack.html然后返回到两个不同文本或按钮的空活动。我怀疑你在启动新活动时或当你的活动开始时做错了某些事情。如果你已经搞砸了堆栈,那么强制将某些内容添加到后台堆栈中是行不通的。 - iheanyi
1个回答

17
你正在创建(而不是显示)通知,正如通知构建器所建议的那样。你需要做的是按照文档中指示的调用startActivities():
TaskStackBuilder.create(ProfileSelectActivity.this)
        .addNextIntentWithParentStack(intent)
        .startActivities();

谢谢。我仍然没有成功,因为当下一个活动开始时,返回按钮只会导致白屏。 - AndroidDev
你确定 PermissionsRequestActivity 正常工作吗?有没有出现任何错误或日志? - njzk2
那确实是问题所在。请参见我上面的“答案”。非常感谢您的帮助。 - AndroidDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接