1

我有两个布局 xml 文件,在 Main.xml 中,有一个名为 android:id="@+id/btnClose" 的按钮,在 About.xml 中还有一个名为 android:id="@+id/btnClose" 的按钮“,没事吧?谢谢!

主.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="3dip"
    android:layout_marginTop="3dip"
    android:background="#DCDCDC" >

     <Button
        android:id="@+id/btnClose"
        style="@style/myTextAppearance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="@string/exit" />
</RelativeLayout>

关于.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"   
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingTop="3dip"
    android:paddingLeft="7dip"
    android:background="@drawable/border_ui"
    android:orientation="vertical" >

     <Button
        android:id="@+id/btnClose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        style="@style/myTextAppearance"
        android:text="@string/myreturn" />


</LinearLayout>
4

3 回答 3

2

不,这不是强制性的。findViewById()指当前的 `views 层次结构。海事组织最好避免歧义

于 2013-06-22T13:21:21.967 回答
2

它可以是一样的。

但是为了避免混淆/歧义,最好按照黑带的建议使用不同的 id。

您可以findViewById 将当前视图层次结构设置为活动。因此,如果您在不同的 xml 布局中具有相同的 id,那很好。

如果你有以下

setContentView(R.layout.main)
Button b = (Button) findViewById(R.id.btnClose); // initialize button

您可以找到当前视图层次结构的ViewById。在你的情况下 main.xml

如果你有以下

setContentView(R.layout.about);
Button b = (Button) findViewById(R.id.btnClose); // initialize button

上述两种情况都是有效的,因为它们main.xml都有about.xml带有 id 的按钮@+id/btncClose

假设您有第二个带有 id@+id/button2的按钮,about.xml并且您有以下内容

 setContentView(R.layout.main);
 Button b = (Button) findViewById(R.id.button2);

您会得到NullPointerException,因为您当前设置为活动的视图层次结构main.xml不是about.xmlmain.xml没有带有 id 的按钮button2

于 2013-06-22T13:23:30.673 回答
1

是的,这很好,因为两个 id 都在不同的 xml 中。但是如果你经常在编码中使用这些 id,你自己会在某些时候感到困惑。所以最好有不同的ID,例如@+id/btnCloseMain@+id/btnCloseAbout

于 2013-06-22T13:26:16.177 回答