Поддержание видимости индикатора выполнения с изменением ориентации
У меня есть индикатор выполнения (стиль ожидания swirly), определенный в XML как:
Я это скрываювидимость в деятельностиonCreate
использование метода,
progressBar.setVisibility(View.GONE);
и запустить его на кнопкеonClick
использование события
progressBar.setVisibility(View.VISIBLE);
Теперь, если я изменю настройку экрана, индикатор выполнения исчезнет. Я понимаю, что действие разрушается и воссоздается при изменении ориентации, а состояние действия воссоздается в новой ориентации из сохраненногоBundle
savedInstanceState
, Так что я прав, думая, что по умолчаниюBundle
Сохранено Android не включает в себя какие-либо изменения, внесенные вProgressBar
Посмотреть объект?
Если это так, то правильно ли говорить, что единственный способ восстановить правильную видимостьProgressBar
после изменения ориентации сохранить флаг (например,boolean pbState = false/true
) переопределив методonSaveInstanceState
и проверять этот флаг вonRestoreInstanceState
и настройки видимости соответственно? Или я упускаю что-то действительно очевидное при сохранении объектов состояния просмотра.
Спасибо
ОБНОВИТЬ:Оба решения, представленные ниже, работают. Я решил сделать ставкуandroid:configChanges="orientation|screenSize"
в XML-файле манифеста. Однако в документации говорится, что этот метод следует использовать только какКрайнее средство, Моя деятельность довольно проста, и поэтому метод manifest xml уменьшает объем кода, требуемого в основной операции, т. Е. НетonRestoreInstanceState
метод. Я полагаю, если выре деятельность более сложная, выВозможно, вы захотите явно определить любые изменения состояния, используя последний метод.