【问题标题】:Android :How to make sure views have unique ids so that onRestoreInstanceState worksAndroid:如何确保视图具有唯一的 ID,以便 onRestoreInstanceState 工作
【发布时间】:2014-08-24 16:48:29
【问题描述】:

android 开发人员指南说,您的活动中的视图需要具有唯一的 ID 才能在 onRestoreInstanceState() 中恢复它们。这是真的吗,还是足以确保每个视图的所有子视图都有不同的 id?

如果整个层次结构中的所有视图都应该具有唯一的 id,那么就不可能将同一布局资源膨胀两次并将两个副本添加到同一视图组。相反,您必须以编程方式完成所有操作,并为您使用的每个视图手动分配唯一 ID。

【问题讨论】:

    标签: android view android-relativelayout onrestoreinstancestate


    【解决方案1】:

    ID 在膨胀布局中应该是唯一的(一个 .xml 资源文件)。但是,描述相同布局(例如,横向和纵向布局视图)的 .xml 资源应该具有相同的 ID

    【讨论】:

    • 感谢您的回答。自从询问后,我发现 onRestoreInstanceState 仅在视图具有唯一 ID 时才有效,因为视图存储在 SparseArray 中,ID 作为键。但这并不能解释该怎么做。例如。如果您使用构造函数 ArrayAdapter(Context, int) 您正在创建一个 ViewGroup,其子项共享相同的 id。当您使用标签 或两次膨胀相同的布局时,您会遇到类似的问题。人们会忽略这一点并接受 onRestoreInstanceState 不起作用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多