R.id.id_name
XMLを膨らませた後、アンドロイドはどのようにビューを見つけるのに使用しますか?
1.それぞれ同じ ID を持つ 1 つのボタンを持つ 2 つの XML があるとします。
2.それらを膨らませてビューに変換しました
3.R.id クラスでint
は、両方のボタンに対して 1 つだけが作成されます。
android は、同じリソース名 (R.id.id_name) を使用して同じ ID を持つこれらのボタンをどのように区別しますか。
R.id.id_name
XMLを膨らませた後、アンドロイドはどのようにビューを見つけるのに使用しますか?
1.それぞれ同じ ID を持つ 1 つのボタンを持つ 2 つの XML があるとします。
2.それらを膨らませてビューに変換しました
3.R.id クラスでint
は、両方のボタンに対して 1 つだけが作成されます。
android は、同じリソース名 (R.id.id_name) を使用して同じ ID を持つこれらのボタンをどのように区別しますか。
ID は一意の参照ではありません。
ただし、実際には、親ビューを使用して区別します。
「これ」がアクティビティであると見なした場合、ボタンを含むレイアウトで設定すると、次のようになります。
Button button = (Button) this.findViewById( R.id.id_name );
レイアウトで最初に見つかったものを返します(実際の動作が定義されているかどうかはわかりません)。
findViewById
ただし、その ID を持つそのようなインスタンスを 1 つだけ含む親ビューを呼び出すこともできます。
LinearLayout okParent = (LinearLayout) this.findViewById( R.id.okLayout );
LinearLayout cancelParent = (LinearLayout) this.findViewById( R.id.cancelLayout );
Button okButton = (Button) okParent.findViewById( R.id.id_name );
Button cancelButton = (Button) cancelParent.findViewById( R.id.id_name );
概念的には、これは一種のパス ベースのルックアップです。これが可能になるように、レイアウトを慎重に設計する必要があります。
Android は簡単な道をたどります。ID はアプリケーション全体で一意ではなく、レイアウト全体で一意です。
の値は、 idR.id.foo
を持つコントロールを保持する 2 つの異なるレイアウトで同じです。foo
一意性を競うわけではないので、問題ありません。
これは、現在コンテンツ ビューとして設定されている (またはインフレートされている) XML ファイルでこの固有View
のものを検索するため、どちらを使用する必要があるかを認識しています。View
id