Android视图关闭某些视图的隐式状态保留

时间:2013-03-20 15:13:18

标签: java android

我有自定义 View,它在同一活动中多次动态添加。

每个自定义视图实例旁边都有TextView个孩子。 TextView ID ,每个视图实例都相同。

对于每个自定义视图实例,我在创建活动时为Text设置了不同的TextView。 当我旋转屏幕时,会重新创建活动,但现在每个TextView显示相同的Text(文本与最后一个实例的文本相同)。

这是因为实例状态的保存和恢复会自动保存一些信息,但这些信息显然与ID相关联,在我的情况下会产生问题。

有没有办法禁用特定视图的自动状态保留?

是否有属性或设置或某些解决方法?

2 个答案:

答案 0 :(得分:45)

您可以使用View.setSaveEnabled (boolean enabled)方法。

也可以使用xml属性saveEnabled

通过android:saveEnabled="false"停用自动状态保存功能

答案 1 :(得分:1)

如果您需要为所有层次结构应用setSaveEnabled:

    public static void SaveEnableViewAndChildren(this View view, bool val)
    {
        if (view == null)
            return;
        view.SaveEnabled = val;

        var viewGroup = view as ViewGroup;
        if (viewGroup == null)
            return;
        for (int i = 0; i < viewGroup.ChildCount; i++)
            SaveEnableViewAndChildren(viewGroup.GetChildAt(i), val);
    }