2010-11-07 3 views
0

Как обычно в android, каждый раз, когда экран переводится в портретный/альбомный режим, Activity работает по жизненному циклу от onSaveInstanceState до onDestroy, а затем воссоздается.Сохранение и восстановление ButtonText при переключении ориентации экрана

В моей деятельности есть ButtonText, который может быть изменен пользователем. Он сбрасывается в исходное состояние, но я должен каким-то образом сохранить последнее состояние. Как я могу это достичь, должен ли я переопределить onSaveInstanceState? Может ли кто-нибудь показать пример?

ответ

1

Шаг № 1: Позвоните getText().toString() на номер Button, чтобы получить подпись.

Шаг № 2: Позвоните по номеру putString() по адресу Bundle, переданному вашей версии onSaveInstanceState(), чтобы сохранить подпись.

Шаг № 3: Вызов getString() на Bundle перешла к вашей реализации onRestoreInstanceState() (или в onCreate(), если Bundle не null, если вы хотите), чтобы получить подпись обратно, а затем вызвать setText() на вашем Button ставить озаглавить обратно.

Here is a sample project, который использует onSaveInstanceState() сэкономить Uri из контакта (который также влияет ли не включен то Button).

+0

Это было ясно как божий день, спасибо! :-) – cody

4

У меня была такая же проблема, и я ожидал, что реализация по умолчанию позаботится о восстановлении текста кнопки. К сожалению, этого не произошло. Наконец, я нашел атрибут android: freezesText соответственно метод setFreezesText (boolean). Если установлено значение true, кнопка автоматически вернет текст.

Смотрите ссылку супер класса TextView Баттона: http://developer.android.com/reference/android/widget/TextView.html#attr_android:freezesText

+1

Этот ответ работает так же просто, как добавление '' android: freezesText = "true" 'к вашей кнопке XML и текст кнопки сохраняется в изменениях ориентации –

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