2011年5月6日金曜日

android:idについて

android:idについて

XMLに書かれているandroid:id、例えば、
android:id="@+id/gridview"
に関して

android developersDeclaring Layoutの記事は分かりにくい。そこで、私なりにまとめてみる。

Viewは階層構造をしています。このため、この階層構造は「木、ツリー」(tree)とも表現されたりします。
個々のViewは、個々にIDを持っています。これは個々のViewを識別するためです。
しかし、プログラマは、全てのViewにIDを与えるコードを書く必要はありません。プログラム内で識別を必要とするViewに対してだけ、意図的にIDを付与すれば良いのです。例えば、多くの場合、LinearLayout等のViewGroupにIDを付与する必要性は無いでしょう。

IDはXMLファイル内では通常は文字列として書きます。例えば、次のように。
android:id="@+id/gridview"

このIDは、コンパイルされた場合、整数として参照されます。この整数値の所在は、(コンパイルされた後で)R.javaファイル内に記されています。このファイルの所在は次のとおりです。
/(プロジェクトのルートフォルダー)/gen/(フォルダー)/R.java
実際には、プログラマーは、R.javaを直接操作したり、見たりはしません。無視しておけば良いです。

XMLにおいてIDの表記の仕方は、既に示したように、次のようになります。
android:id="@+id/my_button"
文字列内のデータが@で始まっている場合、その(@で始まる)文字列をリソースのIDとして解釈します。

+記号がある場合、それは、R.javaファイルに、当該データを「作成する」ことを指示します。

既に作成されてあるデータを参照する場合には、次のように、+記号を付けずに書きます。
android:id="@id/my_button"

例えば、次のような書き方もあります。
android:id="@android:id/empty"
これは、"android"というパッケージネームスペースを使って、android.RリソースクラスからIDを参照します。これはローカルにある、resフォルダーのリソースを参照するものではありません。


0 件のコメント:

コメントを投稿