2011-12-29 3 views
2

Я новичок в android.i есть один activity с main.xml файла. Теперь у меня есть один scroll view в том, что main.xml file.when я запускаю свое приложение в portrait mode, и когда я иду в нижнюю часть scroll view, а затем, когда я изменяю свой application state в ландшафтном режиме, я перехожу в верхнюю часть прокрутки. .Это означает, что при переключении между portrait на landscape или наоборот activity будет отозван. поэтому необходимо сохранить состояние приложения в portrait и восстановить в landscape. так что любое его решение? спасибо заранее Хан, Аамир I.Как сэкономить на рабочем месте

+0

У вас есть этот http://stackoverflow.com/questions/2308628/how-do-you-save-your-activitys-state-when-exiting-android – rfsk2010

ответ

3

Документация делает достойную работу explaining different ways to handle configuration changes, включая изменения ориентации экрана. Одним из таких методов, который хорош для сохранения временного состояния пользовательского интерфейса, является сохранение данных в методе onSavedInstanceState() - как упоминал Джэйсон Куанг.

Как правило, вы можете положиться на Android для сохранения и восстановления состояния View s без особых усилий с вашей стороны. Исходный код для protected метода onSaveInstanceState() объясняет (курсив добавлен):

Реализация по умолчанию берет на себя большую часть пользовательского интерфейса каждого экземпляра состояния для вас по телефону android.view.View.onSaveInstanceState() на каждом вид в иерархии с идентификатором и сохранением идентификатора текущего сфокусированного представления (все из которых восстанавливаются по умолчанию для реализации onRestoreInstanceState (android.os.Bundle)). Если вы переопределите этот метод для сохранения дополнительной информации, не захваченной каждым отдельным представлением, вы, скорее всего, захотите выполнить вызов по умолчанию, иначе будьте готовы сохранить все состояние каждого представления самостоятельно.

Это немного обманчиво, потому что документация API утверждает, что EditText s и s TextView должны android:freezesText="true" явно объявленную на них в файлах XML макет, чтобы убедиться, что Android автоматически сохраняет свое состояние при onSaveInstanceState() вызове. Я не тестировал это недавно, но это то, что делает исходный код. Поэтому лучше всего управлять временным состоянием пользовательского интерфейса.

Еще один совет: вы можете явно предотвратить хранение временных данных для View, позвонив по телефону setSaveEnabled(false) по этому адресу View. (Это не повлияет на его детей.)

Как правило, рекомендуется вручную сохранить состояние экрана в вашем методе onPause(), а также в onSaveInstanceState().

+0

Коллега сообщил мне, что API doc говорит о 'EditText' и 'TextView', требующем автоматического сохранения, явно включенном, как я уже упоминал выше, на самом деле не так. Я думаю, что тестирование всегда является хорошей политикой, чтобы убедиться, что документ говорит, что это актуально. @AamirPathan, вы хотите принять ответ, который вы нашли наиболее полезным и точным? – hotshot309

2

Деятельность будет уничтожена и создана заново при изменении состояния приложения от пейзажа до портрета, если вы хотите сохранить состояние вашей деятельности, вы можете обратиться к Saving Android Activity state using Save Instance State

Смежные вопросы