[关闭]
@myron-lee 2015-03-23T01:23:12.000000Z 字数 462 阅读 1444

准备,自定义控件的状态保存问题

未分类


在 Android 里面,标准控件都会恰当的实现OnSaveInstanceState()和OnRestoreInstanceState()方法,使得你输入到 EditText 的文字可以保存,CheckBox 是否 Check 可以保存。但是这有个要求,就是控件必须有 ID。

把问题分解开来
1、首先是单纯的 CheckBox 的组合控件,组合控件无 ID,而 CheckBox 无 ID

实验证明,这种情况下 checkbox 的状态不能保存。

2、让它们都有在 XML 中定义的 ID

实验证明,这种情况下 checkbox 的状态可以保存。

3、因为在应用中 CheckBox 的数量是未知的,我不可能事先定义好多的 ID 备用。

所以想想可以不可以在用代码生成 ID,实验证明利用View.generateViewId()是不可以的。

我想系统内部是不是按 id 存储和提取状态信息的

最后是绕过去了,方法就是我自己 override onsaveinstancestate 和 onrestoresaveinstance,把 framework 的活自己做了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注