我可以在不同的 xml 文件中的其他布局中使用相同的 id 名称吗???因为我已经这样做了,也许是因为我得到了一个空指针异常,而我对该 xml 的活动没有开始......
1 回答
绝对地。您可以在所需的任意数量的布局中为相同Widget
类型使用相同的 ID。只是同一布局 XML 中的 ID 不同。当然,无需讨论是否推荐这样做。
是什么让几个开发者感到困惑,我承认,当我开始时,它也让我感到困惑。例如,在 Activity 中投射一个 Widget 时,我经常感到困惑,为什么我只有一个匹配的 ID,而我在几个不同的布局中有相同的 ID。
您唯一需要注意的是,例如,考虑这个场景:
我有两个 XML 命名为 saylayout_1.xml
和layout_2.xml
2 个对应Activities
的命名为 sayAct1
和Act2
。现在,两者都具有相同Widget
的 ,TextView
即在两个 XML 中具有相同 ID 的相同。( Although I am using this example, this is not hypothetical. This is actually how it is in an application of mine
)。这与NullPointer在他的评论中所说的完全矛盾。我认为他的意思是你不能在同一个 XML 中使用同一个 ID。
<TextView
android:id="@+id/txtFromName"
style="@style/UserName"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:ellipsize="marquee"
android:gravity="top|left|center"
</TextView>
现在,当我在我的代码中投射这个时,看看我开始输入时建议中显示的内容findViewById(R.id.txtFrom...)
当您在多个 XML 文件中使用相同的 ID 时,为什么会出现NPE可能是由于对 ID 是什么的一些混淆。保持相应的 XML 打开并在投射时检查 ID,你应该一切顺利。如果它仍然存在,我建议使用您的 XML 代码、Java 代码和 LogCat 崩溃报告更新您的帖子。
我通过逐字复制 ID 并在投射时使用与 Widget 实例相同的名称来跟踪这一点。但是,这只是我想的方式。