我有自定义 View
,它在同一活动中多次动态添加。
每个自定义视图实例旁边都有TextView
个孩子。
TextView
有 ID ,每个视图实例都相同。
对于每个自定义视图实例,我在创建活动时为Text
设置了不同的TextView
。
当我旋转屏幕时,会重新创建活动,但现在每个TextView
显示相同的Text
(文本与最后一个实例的文本相同)。
这是因为实例状态的保存和恢复会自动保存一些信息,但这些信息显然与ID相关联,在我的情况下会产生问题。
有没有办法禁用特定视图的自动状态保留?
是否有属性或设置或某些解决方法?
答案 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);
}