なお、説明するのは、たったこれだけの量なので、大丈夫だと思います。
これは、プロジェクトを作った時点で自動的に作られているソースと同じ量です。
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)でお会いしましょう。