我正在开发app,我需要在ListView中显示建议,当方向发生变化时,我希望隐藏该列表。但它无论如何都出现在屏幕上。我试过这个: 1)获取列表适配器并清除它。 2)在方向改变之前设置可见性GONE(但在onCreate之后再次可见) 3)在onCreate中设置可见性GONE,但列表仍然出现在屏幕上(我想也许android会保存旧列表,因为我再次初始化列表视图,它看起来像空,但屏幕上的列表不是)。 那么,我怎么能摆脱这个清单?
答案 0 :(得分:17)
使用方法 setSaveEnabled(boolean)或等效的xml属性<而不是使用像 android:configChanges 这样影响Activity中所有视图的全局内容。 strong> android:saveEnabled ?
控制是否启用保存此视图的状态(即,是否将调用其onSaveInstanceState()方法。)
如果将其设置为false,则在更改方向时应始终返回默认状态,因为其状态将不会保存。
例如,您可以将其放在布局文件中:<ListView
....
android:visibility="invisible"
android:saveEnabled="false">
</ListView>
然后在开始输入时将可见性设置为VISIBLE。或者,如果您更喜欢将可见性和方法 setSaveEnabled 放在onCreate方法中。
我尝试使用简单的ListView和Button将可见性更改为true。在轮换时,ListView变为invisibile(其默认状态)
另请注意:
此标志只能禁用此视图的保存;任何儿童观点仍可保存其状态。
所以你必须在onStop()或你想要的任何方法中清除列表,但即使你不这样做,ListView仍然在旋转时不可见
来源:
答案 1 :(得分:1)
@Override
protected void onSaveInstanceState(Bundle outState) {
}
将此功能覆盖到您的活动中,而不是调用“超级”方法!
或指定清单中的方向:
<activity
android:name="com.blabla"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
答案 2 :(得分:1)
Android系统在设备的方向更改时调用其活动的onCreate()方法。如果您不想在方向更改
上再次创建活动,请将配置更改添加到清单中的活动条目<activity
android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation"
/>