我的问题是这样的:当我按下我收到的通知时,一些活动打开,让我们说活动编号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());
谢谢!
答案 0 :(得分:1)
看起来你想要合成一个后台堆栈:http://developer.android.com/training/implementing-navigation/temporal.html#SynthesizeBackStack(参见"在开始活动时创建后台堆栈")
以及http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse("在开始活动时保留导航"作为"常规活动")
答案 1 :(得分:0)
在onSaveInstanceState&中保存所需的参数。让他们回到onRestoreInstanceState。这样,如果您的活动也被任何其他通知暂停也无关紧要。
答案 2 :(得分:0)
同一场景中的任何人都可以使用我在我的应用中使用的此解决方案。 覆盖onBackPressed(在您从通知路由的活动中)并检查您的应用是否在堆栈中。如果没有,那么开始您的根活动。用户始终可以从根活动导航。这就是我在我的应用程序中所做的事情
@Override
public void onBackPressed() {
if (isTaskRoot()) {
Intent intent = new Intent(this,YourMainActivity.class);
startActivity(intent);
super.onBackPressed();
}else {
super.onBackPressed();
}
}