2011年10月8日土曜日

Chapter15: 画面用javaファイルの簡単な説明

前回までで、とりあえずレイアウトの実践編は終わりにして、あとはちょっとJavaファイルの説明をしようと思います。とはいっても、あくまでもプログラムをガリガリ書くためということではなく、画面を増やしたりするときのために、必要な知識程度として、です。

なお、説明するのは、たったこれだけの量なので、大丈夫だと思います。
これは、プロジェクトを作った時点で自動的に作られているソースと同じ量です。
public class Chapter11Activity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter11);
    }
    // 省略
}


Activity(画面用ファイル)
Activityとは、画面用のクラスのことです。画面用のJavaファイルは、全てActivityクラスを継承しています。継承とは、指定しているクラスの機能を受け継ぐことを言います。機能(メソッド)の内容を書き換えたり、追記したり、新しい機能を追加したりします。
クラスを継承する場合は、extendsで指定します。
public class Chapter11Activity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter11);
    }
    // 省略
}
とはいっても、新しく画面を追加したいときは、真っ新なファイルを作って、全部書かないといけないわけではありません。Eclipseでファイルを作成した時点で、かなり書いてくれます。

Javaファイル(Activity)の作成方法
まず、パッケージ上で右クリックして、新規 > クラスを選択します。
その後、名前に画面用ファイルの名前を記述します。
今回はTestActivityと書きましたが、別に~Activityで終わる必要はありません。
その後、スーパークラスを指定します。スーパークラスとは、継承元のクラスのことです。今回はActivityを継承します。基本的に指定する場合は、パッケージ名 + クラス名になるのですが、覚えていられないので、Eclipseの力を借ります。アシストです。
Activiくらいまで打った時点で、Ctrl + Spaceを押すと、ズラッと候補が出てきます。Activityを選択しましょう。その後、完了を押します。
これだけです。


次は、onCreateメソッドの説明します。

onCreateメソッド
onCreateメソッドとは、Activityが画面を作る際に自動的に呼ばれるメソッドです。敢えてJavaScriptで例えるならば、Window.onLoadメソッドみたいなものと解釈してください。jQueryで言えば、readyメソッドです(細かい意味まで問われると全然違いますが。読み込み完了後に呼ばれるので)。

継承元のメソッドを上書きする場合は、@Overrideという記述が要ります。
onCreateメソッドは基本的にこの形なので、このままコピー&ペーストしてもらって構いません。

public class Chapter11Activity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter11);
    }
    // 省略
}
Androidに限らずですが、アプリケーションにはライフサイクルがあります。アプリが起動してから終了するまで(一時停止からの復帰含む)に、自動的に呼ばれるメソッドがあります。単に画面の確認をしたいだけだったら、onCreateメソッドだけ覚えておけばいいです。

ライフサイクルについて深く学びたい場合は、TechBoosterさんのライフサイクルの図解を見るとよいでしょう。

では、次にonCreateメソッドの中で何をしているかを説明します。

onCreateメソッドの中でレイアウトファイルを指定
onCreateメソッドの中は2行しかないですね。画面を表示するだけだったら、実はこれだけでよいのです。
public class Chapter11Activity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter11);
    }
    // 省略
}
4行目では、親クラス(ここではActivity)のonCreateメソッドを呼び出しています。この処理は必須です。まぁ色々とやってくれてるんだなぁと思ってください(私もそう思ってます)。なお、superとは、作成のときにスーパークラスという表現があったと思いますが、親クラスを示す特別な変数です。Javaでプログラムしていると、ちょくちょく登場します。

5行目で、この画面で使用するレイアウトXMLを指定しています。setContentViewとは、レイアウトを指定するActivity固有の命令(メソッド)です。ここでは、R.layout.chapter11を指定していますが、これは、/res/layout/chapter11.xmlのことを指します。

これだけです。省略している部分はメニューボタンを押したときに表示されるメニューの動作についてのプログラムなので、あとは省略して、別の機会に取扱います。

以上で、実践編(1)は終わりです。お疲れ様でした。
そして、ありがとうございました。

また実践編(2)でお会いしましょう。

0 件のコメント:

コメントを投稿