我可以在不同的xml文件中的其他布局中使用相同的id名称吗??? 因为我已经完成了数据,也许是因为我得到了一个nullpointer异常并且我对该xml的活动没有开始......
答案 0 :(得分:4)
绝对。您可以在任意数量的布局中使用相同的ID用于相同的Widget
类型。 同一个布局XML中的ID不一样。当然不讨论是否推荐这个ID。
让我感到困惑的是几个开发人员和我承认,当我开始时,它确实让我感到困惑。例如,当在Activity中生成Widget时,我常常难过为什么只有一个匹配的ID,当我在几个不同的布局中使用相同的ID时。
你唯一需要注意的是,例如,考虑一下这个场景:
我有两个名为layout_1.xml
和layout_2.xml
的XML,另外两个Activities
,名为Act1
和Act2
。现在,两者都具有相同的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...)
为什么 NPE 可能是因为您在多个XML文件中使用相同的ID,可能是由于对ID的内容有些混淆。保持相应的XML打开并在转换时检查ID,你应该很高兴。如果它仍然存在,我建议您使用XML代码,Java代码和LogCat崩溃报告更新帖子。
我通过字面上复制ID并在投射时使用与Widget实例相同的名称来跟踪它。但是,这只是我的想法。