Hello World, First!と表示される理由は?
さっそく,上記のプログラムでHello World, First!と表示される理由の説明に移ろう。FisrtクラスはActivityクラスを継承する。Activity(アクティビティ)はユーザー・インタフェース画面と考えてよい。アクティビティが最初に起動されるとき,onCreateメソッドが呼び出される。
onCreateメソッドの中の,super.onCreateはスーパークラスのメソッド呼び出しなので,setContentView(R.layout.main)がHello World, First!と表示していることになる。setContentViewがアクティビティの画面を作っていることはそのメソッドの名前からも容易に推測できる。わからないのは引数のR.layout.mainである。
Package ExplorerでFirstPrjを見ると,Rクラスが自動作成されていることがわかる。そのほかにres-layoutにmain.xmlがあり,res-valuesにstrings.xmlというXMLファイルが存在する。
main.xmlには,LinearLayoutというレイアウトの定義がある。LinearLayoutは子要素を1列,もしくは1行に並べる。orientationはレイアウトの方向であり,vertical(縦方向)が指定されている。layout_width(横幅)とlayout_height(縦幅)はともにfill_parent,つまり,“親いっぱい”である。
LinearLayoutの中にTextViewがある。TextViewは文字列の表示を行う。TextViewの中にtext="@string/hello"があるが,その前に,layout_heightに指定されているwrap_contentについての説明が必要だろう。wrap_contentを指定すると,テキストの表示に必要なサイズに自動調整される。
textに指定されている@string/helloは,strings.xmlファイル内の同一の名前を持つ要素の参照を示す。これで,ほとんどHello World, First!と表示される謎解きは終わったかと思うが,XML形式のリソースファイルとFirstクラスのコードを結び付けるのが,Rクラスの役割だ。
mainやapp_name,helloの後の16進数は意味深に映るかもしれないが,単なるリソース識別子である。