30

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

每个自定义视图实例都有一个TextView孩子。TextView有它的ID 并且对于每个视图实例都是相同的。

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

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

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

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

4

2 回答 2

58

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

也可以通过xml使用saveEnabled属性禁用自动状态保存android:saveEnabled="false"

于 2013-03-20T15:18:05.233 回答
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);
    }
于 2016-11-25T10:58:36.440 回答