Различное поведение хранилища состояний для «Back» и «Home» - PullRequest
0 голосов
/ 22 февраля 2011

Я все еще изучаю все тонкости разработки Android.Я играю с приложением Notepad, чтобы попробовать другое поведение.

Сейчас я хочу, чтобы приложение выполняло следующие действия в упражнении NoteEdit:

1) Если Backкнопка нажата, текущее состояние игнорируется;по сути, это похоже на неявную отмену, и вы возвращаетесь к списку.

2) Если нажать кнопку «Домой», вы вернетесь на домашнюю страницу в обычном режиме.Однако если вы снова откроете приложение, оно должно вернуться к действию NoteEdit в том же состоянии, что и при выходе (например, IE, если вы проходили редактирование частично).

Я удалил "saveState "вещи из onPause, потому что я не хочу сохранять в БД, пока не нажата" Confirm "(вместо этого я переместил вызов saveState на кнопку подтверждения).Делая это, нажатие кнопки «Назад» в основном отбрасывает ваши изменения, чего я и хочу.Тем не менее, возвращение домой и возвращение также отбрасывает ваши изменения, хотя они остаются в действии NoteEdit.И «Back», и «Home» вызывают срабатывание сообщения onPause, и оба вызывают срабатывание onResume (либо от нажатия на элемент в случае «Back», либо от возврата в приложение в случае «Home»).

Есть ли способ заставить эти два события по-разному сохранять состояние?Возможно ли, чтобы кнопка «Домой» сохраняла состояние (временно), в то время как кнопка «Назад» не делает этого?

Заранее спасибо!

1 Ответ

1 голос
/ 22 февраля 2011

Вам необходимо определить метод onSaveInstanceState, но вместо сохранения в БД (как в примере с блокнотом) сохраните состояние вашей активности в Bundle.Затем вам нужно восстановить из сохраненного состояния в onCreate, когда переданное в Bundle значение не равно нулю.

...