私はxml
タグに同じビューIDを持つ子を持つレイアウトがいくつかあります。getId()は、異なるレイアウトの同じ名前のビューに対して一意の値を返しますか?
たとえば、my_layout_one
には、IDがview1
の子ビューが含まれており、my_layout_two
もあります。
view1
で呼び出された場合、前述のレイアウトのどれが膨らんでも同じ値が返されますか?
私はxml
タグに同じビューIDを持つ子を持つレイアウトがいくつかあります。getId()は、異なるレイアウトの同じ名前のビューに対して一意の値を返しますか?
たとえば、my_layout_one
には、IDがview1
の子ビューが含まれており、my_layout_two
もあります。
view1
で呼び出された場合、前述のレイアウトのどれが膨らんでも同じ値が返されますか?
id
が適用されている各View
の対応する値はR.java
クラスにあり、これはapp/build/generated/source/r/debug/com/your/package
ディレクトリにあります。あなたはさまざまなレイアウトで宣言されているどのように多くの異なるView
の
public final class R {
public static final class id {
...
public static final int view1 =0x7f0d007e;
// other view's ids
...
}
}
にかかわらず、これらのすべては、彼らがxml
レイアウトに適用される同じIDを持っていると仮定しR.java
クラスで同じ値を持っているでしょう。
View#getId()
R.java
クラスの値を返す以外は何もしません。
質問に答えると - はい、getId()
は、どのレイアウトが膨らんでいるかに関係なく、同じIDを返します。
azizbekian'sさらに、setContentView()
を使用して任意のアクティビティでレイアウトを設定すると、そのレイアウトが膨張し、トップレベルのすべてのビューがアクティビティに追加されることを指摘したいと思います。 これは、findViewById()
を呼び出すと、アクティビティのレイアウトからビューを返し、他のレイアウトリソースファイル内の同じIDを持つ他のビューは返しません。
view1.getID()
に電話すると、view1ではなくview2であることが明らかです。彼らは同じIDを持っていますが、アンドロイドシステムはあなただけがこれを求めているので、view1だけをチェックし、view2はチェックしません。