3

我可以在不同的 xml 文件中的其他布局中使用相同的 id 名称吗???因为我已经这样做了,也许是因为我得到了一个空指针异常,而我对该 xml 的活动没有开始......

4

1 回答 1

5

绝对地。您可以在所需的任意数量的布局中为相同Widget类型使用相同的 ID。只是同一布局 XML 中的 ID 不同。当然,无需讨论是否推荐这样做。

是什么让几个开发者感到困惑,我承认,当我开始时,它也让我感到困惑。例如,在 Activity 中投射一个 Widget 时,我经常感到困惑,为什么我只有一个匹配的 ID,而我在几个不同的布局中有相同的 ID。

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

我有两个 XML 命名为 saylayout_1.xmllayout_2.xml2 个对应Activities的命名为 sayAct1Act2。现在,两者都具有相同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 实例相同的名称来跟踪这一点。但是,这只是我想的方式。

于 2013-04-04T12:41:32.963 回答