如何在Android中保存视图状态?

Sem*_*lov 9 android state orientation

我正在开发app,我需要在ListView中显示建议,当方向改变时,我希望隐藏该列表.但它无论如何都出现在屏幕上.我试过这个:1)获取列表适配器并清除它.2)在方向改变之前设置可见性GONE(但在onCreate之后再次可见)3)在onCreate中设置可见性GONE,但列表仍然出现在屏幕上(我想也许android保存旧列表,因为我再次初始化列表视图,它看起来像空的,但屏幕上的列表不是).那么,我怎么能摆脱这个名单呢?

fab*_*lbr 18

而不是使用像android:configChanges那样影响Activity中所有视图的全局,使用方法setSaveEnabled(boolean) 或等效的xml属性 android:saveEnabled

控制是否启用保存此视图的状态(即,是否将调用其onSaveInstanceState()方法).

如果将其设置为false,则在更改方向时应始终返回默认状态,因为其状态将不会保存.

例如,您可以将其放在布局文件中:

<ListView
    ....
    android:visibility="invisible"
    android:saveEnabled="false">
</ListView>
Run Code Online (Sandbox Code Playgroud)

然后在开始键入时将可见性设置为VISIBLE.或者,如果您更喜欢将可见性和方法setSaveEnabled放在onCreate方法中.

我尝试使用简单的ListView和Button将可见性更改为true.在轮换时,ListView变为invisibile(其默认状态)

另请注意:

此标志只能禁用此视图的保存; 任何子视图仍可保存其状态.

所以你必须在onStop()或你想要的任何方法之前清除列表,但即使你不这样做,ListView在旋转时仍然是不可见的

资源: