Сохранение обратной активности при нажатии на уведомление

Моя проблема заключается в следующем: когда я нажимаю на уведомление, которое я получил, какая-то активность открыта, скажем, активность № 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 ответа

Похоже, вы хотите синтезировать задний стек: http://developer.android.com/training/implementing-navigation/temporal.html (см. "Создание заднего стека при запуске упражнения")

а также http://developer.android.com/guide/topics/ui/notifiers/notifications.html ("Сохранение навигации при запуске действия" как "Обычное действие")

Любой в том же сценарии может использовать это решение, которое я использую в своих приложениях. Переопределите onBackPressed (в вашей активности, перенаправленной с уведомлений) и проверьте, находится ли ваше приложение в стеке или нет. если нет, то начните свою корневую активность. Пользователь всегда может перейти от вашей корневой активности. Это то, что я делаю в своих приложениях

@Override
public void onBackPressed() {
    if (isTaskRoot()) {
        Intent intent = new Intent(this,YourMainActivity.class);
        startActivity(intent);
        super.onBackPressed();
    }else {
        super.onBackPressed();
    }
}

Сохраните необходимые параметры в onSaveInstanceState и верните их в onRestoreInstanceState. таким образом, не будет иметь значения, была ли ваша активность приостановлена ​​любым другим уведомлением.

Другие вопросы по тегам