2015-04-14 1 views
0

Это правильно?Скрытый при запуске вид не отображается снова после просмотра, затем изменение конфигурации

  1. В макете флажок отмечен как невидимый или ушел.
  2. После создания отметьте этот флажок как видимый (т. Е. После выбора кнопки).
  3. Выполните изменение конфигурации (например, поверните устройство).
  4. Флажок, ранее отмеченный как видимый, не отображается.

Однако проверенное состояние флажка поддерживается, что меня сбивает с толку, какая информация сохраняется, а что нет?

Каков наилучший способ убедиться, что вид остается видимым после изменения конфигурации?

Спасибо, Zach

ответ

1

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

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

1

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

Состояние просмотров не поддерживается по умолчанию для Views. Определение для onSaveInstanceState() - here.

«Это состояние должно содержать только информацию, которая не является постоянной или не может быть восстановлена ​​позже».

Вы можете использовать пользовательскую реализацию CheckBox, которая сохраняет состояние видимости, или сохранить это состояние как логическое (buttonPressed = true) в вашей активности/фрагменте и установить видимость после раздувания макета. Последнему было бы легче.

+0

Благодарим вас за ответ. В моем текущем примере я использую Activity. если бы я должен был сохранить состояние «buttonPressed = true», мне пришлось бы «поставить» это где-то также. Вероятно, в связке? Это верно? – Zach

+0

@ Zach да, вы можете сохранить этот булев в пакете 'outState' в onSaveInstanceState (Bundle outState). И верните его из пакета «savedInstanceState» в onCreate (Bundle savedInstanceState) –