在android中的不同xml文件中使用相同的id名称

时间:2013-04-04 12:26:12

标签: android xml

我可以在不同的xml文件中的其他布局中使用相同的id名称吗??? 因为我已经完成了数据,也许是因为我得到了一个nullpointer异常并且我对该xml的活动没有开始......

1 个答案:

答案 0 :(得分:4)

绝对。您可以在任意数量的布局中使用相同的ID用于相同的Widget类型。 同一个布局XML中的ID不一样。当然不讨论是否推荐这个ID。

让我感到困惑的是几个开发人员和我承认,当我开始时,它确实让我感到困惑。例如,当在Activity中生成Widget时,我常常难过为什么只有一个匹配的ID,当我在几个不同的布局中使用相同的ID时。

你唯一需要注意的是,例如,考虑一下这个场景:

我有两个名为layout_1.xmllayout_2.xml的XML,另外两个Activities,名为Act1Act2。现在,两者都具有相同的Widget,在两个XML中具有相同ID的相同TextView。 (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...)

时查看建议中显示的内容

enter image description here

为什么 NPE 可能是因为您在多个XML文件中使用相同的ID,可能是由于对ID的内容有些混淆。保持相应的XML打开并在转换时检查ID,你应该很高兴。如果它仍然存在,我建议您使用XML代码,Java代码和LogCat崩溃报告更新帖子。

我通过字面上复制ID并在投射时使用与Widget实例相同的名称来跟踪它。但是,这只是我的想法。