ロジックを記述するHelloWorldActivity.java
まずは,ロジックを記述する「HelloWorldActivity.java」を見てみよう。
package jp.co.nikkeibp.itpro.helloworld;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Androidにおいて,アプリケーションがユーザーからの操作を受け付けるインタフェースを制御するためのクラスを「Activity(アクティビティ)」と呼ぶ。PCのアプリケーションで言えばウィンドウ画面にあたるものと考えてもらえばよい。Activityファイルは画面ごとに作成し,各画面のロジックを記述するものである。Activity内にはボタンやテキストなどの部品を配置するが,Androidアプリではこれらの部品を「View (ビュー)」と呼ぶ。
このサンプルの場合は,アクティビティ作成時に「onCreate」が実行され,「setContentView」で「R.layout.main」を設定しレイアウト定義ファイル(rss/layout/main.xml)を呼び出している。ビュー(ボタンやテキストなどの部品)はここではなく,後に説明するレイアウト定義ファイル内に記述する。Activityでは文字列やレイアウトの内容には触れず,ロジック部分だけを記述していくことで全体の見通しをよくしているのである。
R.javaは変更してはいけない
さて,「HelloWorldActivity.java」から呼ばれているRクラスだが,AndroidプログラムではActivityファイルから直接リソースを利用するのではなく,このクラスを利用してリソースを参照する。
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package jp.co.nikkeibp.itpro.helloworld;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
この「R.java」ファイルは,「res」以下に配置したファイルから自動的に生成されるため,ファイルの冒頭に注意書きがあるように,開発者が変更してはならない。
ここで試しに,「res/drawable」に適当な画像ファイル「sample.png」を置いてみよう。自動的にres以下のファイルを探索し,R.javaの内容が書き変わって,以下のように「sample」定数が追加されたと思う。
public static final class drawable {
public static final int icon=0x7f020000;
public static final int sample=0x7f020001;
}
このように,Eclipseを使った開発ではリソースの追加・管理が非常に簡単になる。