R.java-在android中处理重复的View ID

sir*_*raj 1 android

假设我在两个不同的布局中为两个不同的视图使用相同的id,我可以看到在R.java中的类"id"中只为id创建了一个引用.实际上我认为它应该在构建时在类"id"中添加具有相同名称的常量时显示错误.为什么它没有显示错误?.它如何识别具有单个id的两个不同视图?

Nic*_*ckL 5

如果你有两个不同的人,在两个不同的组中,两个都叫Vicky,那么在调用名字(= id)时该人是谁并不重要.如果你在第一组中称为'Vicky',则该组中的Vicky会做出响应.在android中,您可以使用组setContentView(<layout file>)在哪里<layout file>为活动分配一组"视图".如果您通过findViewWithId()请求具有不可用的id的视图(如在加载的布局文件中,而不是在加载的布局文件中),则返回null.

例:

layout1.xml包含

<View id="@+id/name1"/>
<View id="@+id/name2"/>
<View id="@+id/name3"/>
Run Code Online (Sandbox Code Playgroud)

layout2.xml包含

<View id="@+id/name1"/>
<View id="@+id/name3"/>
Run Code Online (Sandbox Code Playgroud)

调用findViewById(R.id.name1)第一个和第二个布局文件将返回第一个视图.但是当你打电话findViewById(R.id.name2)给第二个布局时,它会返回null.id DOES存在于A布局文件中,但不在"已加载"布局文件中.

Id不是对View对象的引用.它们是可由不同布局中的多个视图使用的标识符.通过在布局文件中查找标识符,您可以使用它获取对View的引用.