Должно ли onSaveInstanceState сохранять «включенность» представлений? - PullRequest
4 голосов
/ 18 мая 2010

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

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

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

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

РЕДАКТИРОВАТЬ: Кстати, состояние сохраняется только для видов, которые имеют идентификаторы. И эта кнопка есть, я гарантирую, что:)

Ответы [ 2 ]

0 голосов
/ 20 мая 2010

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

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

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

* +1007 *

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

Ваши варианты следующие:

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

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

0 голосов
/ 18 мая 2010

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

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

...