单击通知时保留后台活动

时间:2013-02-27 12:34:24

标签: android eclipse notifications

我的问题是这样的:当我按下我收到的通知时,一些活动打开,让我们说活动编号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());

谢谢!

3 个答案:

答案 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();
    }
}