我在 xml 中定义了一个进度条(漩涡等待风格):
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.ProgressBar.Large"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/progress"
/>
onCreate
我在活动的方法中隐藏了它的可见性,使用,
progressBar.setVisibility(View.GONE);
onClick
并使用在按钮的事件上启动它
progressBar.setVisibility(View.VISIBLE);
现在,如果我改变屏幕方向,进度条就会消失。我了解活动在方向更改时被销毁并重新创建,并且活动的状态是从保存的新方向重新创建的Bundle
savedInstanceState
。那么我认为Bundle
android保存的默认值不包括对ProgressBar
View对象所做的任何更改是否正确?
如果是这种情况,是否正确地说在方向更改后恢复正确可见性的唯一方法是通过覆盖方法并检查该标志并相应地设置可见性ProgressBar
来保存标志(例如) ?或者,我是否遗漏了一些关于保存视图对象状态的非常明显的东西。boolean pbState = false/true
onSaveInstanceState
onRestoreInstanceState
谢谢
更新:
下面提供的两种解决方案都有效。我决定选择放入android:configChanges="orientation|screenSize"
清单 xml 文件。但是,文档指出,这种方法只能作为最后的手段使用。我的活动相当简单,因此清单 xml 方法减少了主要活动中所需的代码量,即没有onRestoreInstanceState
方法。我想如果您的活动更复杂,您可能希望使用后一种方法明确定义任何状态更改。