@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 的活自己做了。