2010-05-18 4 views
3

У меня есть функция предпочтений, где я могу изменить язык и тему моего приложения. Оттуда я возвращаюсь к предыдущему действию с помощью клавиши «Назад», и я хочу воссоздать активность.Должен ли onSaveInstanceState сохранять «включенность» представлений?

Мне удалось это сделать, повторно инициализируя макет в onResume, а также позвонить onRestoreInstanceState оттуда. Все взгляды будут восстановлены должным образом, при необходимости будут отмечены флажки, edittexts заполнены текстами, которые я ранее там оставил.

Но у меня также есть кнопка, которая изначально отключена, и включается только при проверке радиообмена. Проблема заключается в следующем: я проверяю радиообъем, кнопка становится включенной. Затем я перехожу к настройкам, меняю тему и возвращаюсь к первому действию. Когда я приеду туда, радиатор будет восстановлен, как отмечено, но кнопка отключена.

Так что кажется, что включенное/отключенное состояние не сохраняется в комплекте, что кажется противоречивым. И я не нашел никакого кода в источнике Android, который делает это тоже. Я что-то упустил, или мне нужно написать свой собственный код для этого?

EDIT: BTW, состояние сохраняется только для видов, имеющих идентификаторы. И у этой кнопки есть одна, я гарантирую, что :)

ответ

0

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

Из вашего заявления:

Но у меня также есть кнопка, которая изначально отключена, и становится доступной только при радиокнопке проверяются.

Кажется, что у вас есть слушатель на радиаторе, который дает кнопку. Из этого я понимаю, что кнопка изначально отключена, а это означает, что вам придется менять это при каждом запуске.

ваши варианты следующим образом:

  • Были ли радиокнопку установить какое-то глобальное предпочтение, которое проверяется в onResume, что позволяет кнопку при необходимости
  • Когда радиокнопку проверяется, изменить глобальные параметры (или, возможно, настройки графического интерфейса пользователя), к которой включена кнопка. Это может остаться навсегда до тех пор, пока радиатор не будет снят снова.
  • Сохранение enabledness в onSaveInstanceState, как вы упоминаете

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

0

Самый простой способ - включить вашу кнопку в onResume, если установлен радиобаллон.

Edit: PreferenceGroup может обрабатывать зависимости между видами, но она нуждается в активности, чтобы быть подклассом PreferenceActivity.

+0

Уверен, но у меня много действий с похожим поведением, и я хотел бы иметь решение kill-em'-all. Давайте посмотрим, появятся ли какие-либо идеи. –

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

  • Нет связанных вопросов^_^