Android: возврат к предыдущей активности без вызова финиша () - PullRequest
7 голосов
/ 26 октября 2009

У меня есть приложение для Android с множеством действий, придумайте что-то вроде книги, где каждая страница - это новое действие. Пользователь может вносить изменения в каждое действие, например выделять определенные тексты разными цветными маркерами и т. Д., И очень важно, чтобы я запомнил эту информацию, пока приложение остается в живых (и я не хочу / не должен помнить какой-либо из это когда это не так). Как я понимаю, лучший механизм хранения такого рода информации - это использование onSaveInstanceState(Bundle outState) и onCreate(Bundle) / onRestoreInstanceState(Bundle), а не, скажем, механизма предпочтений. Моя единственная проблема заключается в том, что пользователь может перейти назад к предыдущим страницам («Действия»), и единственный известный мне способ достижения этого - вызвать finish(), что, конечно, убивает текущее действие, не вызывая onSaveInstanceState(Bundle outState), и даже если оно действительно вызывало В следующий раз, когда я запустил действие, представляющее эту страницу, это был бы совершенно новый экземпляр. Итак, мой вопрос: есть ли способ вернуться к предыдущему занятию без вызова finish()? или есть ли лучший способ сохранить эту информацию? может через статические переменные?

Спасибо!

P.S. Я знаю, что мог бы также реализовать свое приложение по-другому, чтобы не у каждой страницы была своя активность, но это не тот ответ, который я ищу.

Ответы [ 2 ]

8 голосов
/ 19 июля 2011

Попробуйте использовать startActivity () с такими флагами, как Intent.FLAG_ACTIVITY_CLEAR_TOP. Вы можете прочитать полную историю здесь: http://developer.android.com/reference/android/content/Intent.html#setFlags(int)

2 голосов
/ 26 октября 2009

У меня была точно такая же проблема, и после того, как я много думал и пытался, ИМХО я нашел самое реальное решение. Я унаследовал Activity и добавил статический метод для уничтожения, если существует только. Таким образом, вместо того, чтобы убивать деятельность, когда она выходит. Я убиваю это всякий раз, когда это вызывают снова. Например,

MyActivity.killIfExists();
startActivity(new Intent(this, MyActivity.class));

Таким образом, приложение всегда будет одноэлементным и сохранит свое состояние с помощью onSaveInstanceState.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...