使用backstack启动Activity

时间:2016-07-13 21:21:44

标签: android android-intent android-pendingintent back-stack

我正在尝试启动一项活动,同时正确维护一个后台堆栈以允许用户使用后退按钮。为此,我正在关注Google的instructions,但我无处可去。当我单击我的按钮时,没有任何反应(除了日志输出)。我需要做些什么才能使此次发布成为下一个活动?

        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实施以下建议,但我仍然感到困惑。为了将startActivities()添加到TaskStackBuilder行的末尾,我必须删除对PendingIntent的任何赋值。这可能还可以。但是,在下一个活动开始后,如果我点击后退按钮,我只会看到一个白色屏幕。

TaskStackBuilder.create(ProfileSelectActivity.this)
    .addNextIntentWithParentStack(intent)
    .startActivities();

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

1 个答案:

答案 0 :(得分:9)

您正在做的是创建(不显示)通知。 (正如通知建设者所建议的那样。)

如文档中所示,您需要做的是致电startActivities()

TaskStackBuilder.create(ProfileSelectActivity.this)
        .addNextIntentWithParentStack(intent)
        .startActivities();