0

我的问题是这样的:当我按下收到的通知时,一些活动是打开的,比如说活动编号 3。但是当我按下后退按钮时,我通过 android 导航到菜单。我想要做的是保持用户正确的导航体验,当我按下后退按钮时,它将带我到活动编号 2,当我按下后退按钮时,它会带我到活动编号 1,依此类推。
我遇到的另一个问题是,当我打开 2 号活动时,我需要在意图中设置一些额外的数据,但我不知道如何设置。
我的问题总结:保留用户的正确导航并为将通过单击后退按钮打开的活动设置一些额外内容。

这是我的通知代码:

NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("New Question")
                .setContentText("" + CurrentQuestion.getAuthor().getUserName() + ": " + CurrentQuestion.getQuestion() + "");

        Intent openHomePageActivity = new Intent("com.example.ihelp.HOMEPAGEACTIVITY");
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addNextIntent(openHomePageActivity);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
                );
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(0, mBuilder.build());

谢谢!

4

3 回答 3

1

看起来你想合成一个后台堆栈: http: //developer.android.com/training/implementing-navigation/temporal.html#SynthesizeBackStack(请参阅“启动活动时创建后台堆栈”)

以及http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse(“启动活动时保留导航”作为“常规活动”)

于 2014-03-31T12:05:41.623 回答
1

同一场景中的任何人都可以使用我在我的应用程序中使用的这个解决方案。覆盖 onBackPressed (在您从通知路由的活动中)并检查您的应用程序是否在堆栈中。如果没有,那么开始你的根活动。用户始终可以从您的根活动导航。这就是我在我的应用程序中所做的

@Override
public void onBackPressed() {
    if (isTaskRoot()) {
        Intent intent = new Intent(this,YourMainActivity.class);
        startActivity(intent);
        super.onBackPressed();
    }else {
        super.onBackPressed();
    }
}
于 2017-06-22T08:00:16.920 回答
0

将您需要的参数保存在 onSaveInstanceState 中并在 onRestoreInstanceState 中取回它们。这样,您的活动是否也被任何其他通知暂停都没关系。

于 2013-02-27T13:18:13.493 回答