Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

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

android-common-top

レイアウトXMLには、全要素に対して共通の属性があります。その1つにid属性があります。id属性はAndroidアプリ開発において頻繁に使用されます。ここでは、id属性について説明します。

 

広 告

 

目次

前提条件

 

動作確認端末

 

1. id属性の構文

レイアウトXMLの全要素は、レイアウトXMLの中で要素を特定するためのユニークなIDを属性に定義することができます。Androidアプリは、レイアウトXMLのViewオブジェクト要素(TextViewButtonなど)もしくはViewGroupオブジェクト要素(LinearLayoutRelativeLayoutなど)を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);

手順としては以上です。

 

広 告