Android:如何确保视图具有唯一的 ID,以便 onRestoreInstanceState 工作
Posted
技术标签:
【中文标题】Android:如何确保视图具有唯一的 ID,以便 onRestoreInstanceState 工作【英文标题】:Android :How to make sure views have unique ids so that onRestoreInstanceState works 【发布时间】:2014-08-24 16:48:29 【问题描述】:android 开发人员指南说,您的活动中的视图需要具有唯一的 ID 才能在 onRestoreInstanceState() 中恢复它们。这是真的吗,还是足以确保每个视图的所有子视图都有不同的 id?
如果整个层次结构中的所有视图都应该具有唯一的 id,那么就不可能将同一布局资源膨胀两次并将两个副本添加到同一视图组。相反,您必须以编程方式完成所有操作,并为您使用的每个视图手动分配唯一 ID。
【问题讨论】:
【参考方案1】:ID 在膨胀布局中应该是唯一的(一个 .xml 资源文件)。但是,描述相同布局(例如,横向和纵向布局视图)的 .xml 资源应该具有相同的 ID
【讨论】:
感谢您的回答。自从询问后,我发现 onRestoreInstanceState 仅在视图具有唯一 ID 时才有效,因为视图存储在 SparseArray 中,ID 作为键。但这并不能解释该怎么做。例如。如果您使用构造函数 ArrayAdapter(Context, int) 您正在创建一个 ViewGroup,其子项共享相同的 id。当您使用标签以上是关于Android:如何确保视图具有唯一的 ID,以便 onRestoreInstanceState 工作的主要内容,如果未能解决你的问题,请参考以下文章