2012年2月25日土曜日

【Forest君用】Hello World その2

最近バタバタしてて、なかなか更新できないsirocoです。。。

「Hello Android!」アプリを作成してからだいぶ日が経ちましたが、
今回は、中身を見ていこうと思います。
とはいっても、詳細まで理解するためではなく、
大まかな構造や、アプリを作っていくうえで最低限必要なところだけ、
押さえていきます。

まずはJavaソースから見ていきます。
src/作成したパッケージ内にある「HelloAndroidActivity,java」を開きます。
次の様になっているはずです。

package jp.gr.java_conf.siroco.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

1行目、ここはこのソースがどのパッケージに属しているかを示します。

3、4行目、"import ~" で外部パッケージのクラスを使用できるようになります。
この例だと、「android.app」パッケージの「Activity」クラスと
「android.os」パッケージの「Bundle」クラスを使用しているという事です。

5行目以降が「HelloAndroidActivity」クラスの実装内容です。

一言で書くと、
「Activity」クラスを継承した「HelloAndroidActivity」クラスは、
スーパークラスの"onCreate"メソッドをオーバーライドし、
そのメソッド内で同一パッケージ内に存在する「R.java」の「layout」クラスで定義されたID
"main"に紐ずくxmlファイルをアプリケーションの画面レイアウトとして設定している。
といった感じでしょうか。

始めての方はさっぱり何のことかわからないと思います。
今回覚えておいてほしいのは次の3点です。
  • 「Activity」クラスがアプリの画面を作成する
  • アプリ起動時 は"onCreate"メソッドが実行される
  • 画面レイアウトはxmlファイルで定義した内容を設定する

1点目。
Androidアプリの画面はほぼ 「Activity」クラス で作成さてています。
「Activity」クラスには、起動したときに実行するメソッド、終了したときに実行するメソッド、
アプリがバックグラウンド表示(他のアプリが表で起動しているなど)のときに実行するメソッド、
など画面の状態にあわせたメソッドが用意されています。
但し 「Activity」自体は自信を拡張して使用するために用意された雛型の様なクラスですので、
各アプリでこれをextends(継承)して、それぞれに合った機能を実装していきます。
「HelloAndroidActivity」でいうと、画面レイアウトを設定する機能を追加実装しています。

2点目。
「Activity」クラスに画面の状態に合わせたメソッドが用意されていることは
1点目で書きましたが、起動時に実行されるのが"onCreate"というメソッドです。
このメソッドは、起動時に1度だけ実行されるメソッドですので、
アプリの画面の設定や、項目の初期化などはこのメソッドで行います。
Androidアプリ開発で一番お世話になるメソッドではないでしょうか?
「HelloAndroidActivity」ではソースの13行目で画面レイアウトを設定しています。
(これをしないと、、、13行目を消して実行してみるとわかります。)

3点目。
ソースの13行目に"setContentView(R.layout.main)"とありますが、
これは「Activity」クラスに用意された"setContentView"メソッドに
引数として"R.layout.main"を渡しています。
"R.layout.main"の実体は数字の羅列で、IDとして使用されています。
そのIDが示すのが、"main.xml"です。
このxmlファイルで定義された画面レイアウトを"setContentView"メソッドが読み取って
画面に設定しているという事です。
("main.xml"は res/layout 内にあります。説明は次の機会に。。。)


以上です。
長々と説明しましたが、
アプリの画面を作る際は、「Activity」クラスを使用して、
"onCreate"メソッド内で画面を設定しましょう。
と言う事です。

説明ベタだけど伝わるかな。。。

1 件のコメント:

  1. 手が付けられず恐縮です。。う~む。。とりあえずどんどん読み進めて帰ってこようと思います!それくらい慣れない!

    返信削除