1

Main.xml には android:id="@+id/btnClose" という名前のボタンがあり、About.xml には android:id="@+id/btnClose という名前のボタンもあります。 "、 大丈夫ですか?ありがとう!

Main.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>

About.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 階層を参照します。Imoあいまいさを避けることが好ましい

于 2013-06-22T13:21:21.967 に答える
2

それは同じかもしれません。

しかし、混乱/あいまいさを避けるために、blackbelt で提案されているように、異なる 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

上記の両方のケースは両方とも有効であり、idmain.xmlabout.xml持つボタンがあります@+id/btncClose

IDが入った2番目のボタン@+id/button2about.xmlあり、以下があるとします

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

NullPointerExceptionアクティビティに設定されている現在のビュー階層がmain.xmlnotであるため、取得できますabout.xmlmain.xmlid のボタンがありませんbutton2

于 2013-06-22T13:23:30.673 に答える
1

はい、両方の ID が異なる xml にあるので問題ありません。しかし、これらの ID をコーディングで定期的に使用すると、ある時点で混乱することになります。したがって、 と のように異なる ID を使用することをお勧め@+id/btnCloseMain@+id/btnCloseAboutます。

于 2013-06-22T13:26:16.177 に答える