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