[Android] android:id属性について

レイアウトXMLには、全要素に対して共通の属性があります。その1つにid属性があります。id属性はAndroidアプリ開発において頻繁に使用されます。ここでは、id属性について説明します。
広 告
目次
前提条件
動作確認端末
1. id属性の構文
レイアウトXMLの全要素は、レイアウトXMLの中で要素を特定するためのユニークなIDを属性に定義することができます。Androidアプリは、レイアウトXMLのViewオブジェクト要素(TextView
やButton
など)もしくはViewGroupオブジェクト要素(LinearLayout
やRelativeLayout
など)をJavaロジックからIDを元に参照し、処理を実行することができます。
IDはレイアウトXMLのid属性に設定します。id属性は以下のように記述します。
android:id="@+id/my_button"
先頭のアットマーク(@
)がついているものは、アプリのコンパイル時にAndroidフレームワークのXMLパーサによって、文字列IDからリソースIDに変換されます。
リソースIDはint型の整数で、build/generated/source/r.debug/<packagename>/R.java
に定義されています。プラス記号(+
)がついているものは、新しいリソース名として扱われ、R.java
ファイルに新たなリソースIDが追加されます。
id属性に設定するIDは必ずしもアプリ内で一意である必要はありません(しかしアプリで一意の方が望ましいです)。しかし、レイアウトXML内においては一意である必要があります。
Androidフレームワークによって提供されているIDもあります。AndroidのIDを参照する場合は、プラス記号(+
)をつける必要はありませんが、「android:
」を先頭につける必要があります。以下に例を示します。
android:id="@android:id/empty"
2. id属性の使い方
ここではid属性を使って、レイアウトXMLで定義したViewオブジェクト要素をJavaのインスタンスとして取得する手順について説明します。
まずレイアウトXMLに任意のViewオブジェクト要素を定義し、id属性でユニークなIDを設定します。
<Button android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/my_button_text"/>
次にレイアウトXMLをJavaで読み込み、Viewオブジェクト要素のJavaのインスタンスとして取得します。
(通常はこの処理はonCreate()メソッドの中で実行します)
Button myButton = (Button) findViewById(R.id.my_button);
手順としては以上です。