android 开发者指南说,Views
在你的活动中需要有唯一的 id 才能在onRestoreInstanceState()
. 这是因为onRestoreInstanceState()
通过SparseArray
使用 ids 作为键来工作。
我觉得这非常奇怪,因为很多标准的 Android 方法都鼓励重用 id。例如,a 的所有构造函数都将ArrayAdapter
resourceId 作为参数,以便为 a 中的所有子级扩展相同的 xml 资源ListView
。同样,如果您<include layout ...>
在 xml 中使用,您正在重用视图 ID。
因此,除非开发人员实际上没有使用标准的、推荐的方法,否则我看不到有很多应用程序实际上满足了所有应用程序都Views
具有唯一 ID 的要求。
这个结论是错误的吗?另外,onRestoreInstanceState
如果 id 不是完全不同的行为是什么,这种行为是否可以接受?
编辑
相关报价出现在页面http://developer.android.com/training/basics/activity-lifecycle/recreating.html上,内容如下:
注意:为了让 Android 系统恢复 Activity 中视图的状态,每个视图必须有一个唯一的 ID,由 android:id 属性提供。
注意:始终调用 onRestoreInstanceState() 的超类实现,以便默认实现可以恢复视图层次结构的状态。