состояние активности после startActivityForResult

В документации по андроиду сказано следующее:

... когда действие приостанавливается или останавливается, состояние действия сохраняется. Это верно, потому что объект Activity все еще удерживается в памяти, когда он приостановлен или остановлен — вся информация о его членах и текущем состоянии остается активной. Таким образом, любые изменения, внесенные пользователем в действие, сохраняются, поэтому, когда действие возвращается на передний план (когда оно «возобновляется»), эти изменения все еще сохраняются.

Но в моей деятельности, когда я возвращаюсь из другой деятельности, расширяемый список сбрасывается (все расширенные группы свернуты). Данные не изменяются, а адаптер и курсор не уведомляются и не запрашиваются. Я проверил, что метод обратного вызова onDestroy никогда не вызывается, только onPause и onStop.

Я выхожу из активности, используя startActivityForResult, и возвращаюсь, используя finish().

Пожалуйста, почему я теряю состояние? Спасибо.


person Alpha75    schedule 20.02.2012    source источник


Ответы (1)


Много раз, когда вы используете startActivityForResult, вы теряете свое состояние. Вам необходимо сохранить все соответствующие данные, переопределив onSaveInstanceState и добавив данные в Bundle. Также переопределите onRestoreInstanceState для обработки, когда вы вернетесь и вам нужно будет восстановить ваши данные. Итак, в вашем случае вы можете добавить в Bundle, какие части расширяемого списка расширяются, чтобы вы могли снова расширить их, когда вернетесь.

person koopaking3    schedule 20.02.2012