1

我知道如何通过调用setID(). 为了使 ID 唯一,我使用ids.xml并从预先生成的 ID 池中传递给setID()ID。

问题 1:有什么方法可以在不使用的情况下分配 ID,ids.xml因为我无法预测运行时需要多少 ID?

我试图绕过问题 1中提出的第一个问题,方法是根据标签的哈希(每个标签都是唯一的)动态分配每个 id,但是无法保证 ID 不会与自动生成的 ID 冲突R.java.

问题1.1: ID命名冲突如何解决?

问题 2:假设我有我动态分配和生成的 ID 值。由于上述 ID 未出现在 中R.idfindViewById()因此不适用于检索视图。因此,当 ID 已知时,如何检索视图?

答案 2:onCreate()只有在返回控制(终止)后,您才能通过相应的 ID 检索视图。

4

2 回答 2

8

从 API 级别 17 开始,您可以通过调用获取新 id

View.generateViewId()

详情在这里。

于 2013-03-15T22:25:55.537 回答
1

有什么方法可以在不使用 ids.xml 的情况下分配 ID,因为我无法预测运行时需要多少个 ID?

这保证了每个视图都有一个唯一的 ID

for(int i =0 ; i < yourIDcount ; i++){
yourView.setId(i);
}

当 ID 已知时如何检索视图?

View.findViewById(yourView.getId());

可用于获取您的视图的 ID,因为每个视图都有一个唯一的 ID,您可以取回您想要的视图..

动态一词意味着在运行时创建,因为您在 onCreate 中分配了 id,所以它被分配为视图 id,因为 onCreate 仅在创建活动后被调用,您可以确保您分配的 id 保持不变......

于 2012-04-21T17:27:10.617 回答