onCreate
それでは、Javaのソースコードを見ていきましょう。HelloSampleActivityクラスを見ると、あらかじめ以下のように記述されています。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // (1)
setContentView(R.layout.activity_hello_sample); //(2)
}
このonCreate()というメソッドは、Androidアプリが起動すると、まず実行されるメソッドです。なので、画面作成やデータの用意など、初期処理として必要なものはこのメソッドに書く必要があります。
ここで、あらかじめ記述されている2行について説明しておきます。
(1)は親クラスのonCreate()メソッドを呼び出しています。アクティビティクラスはActivityクラス(またはその子クラス)を継承して作る必要があります。onCreate()メソッドはActivityクラスで定義されているメソッドで、それをオーバーライドする形で記述します。ところが、ActivityクラスのonCreate()も処理しておく必要がありますので、この記述が必要なのです。
(2)はこのアプリで表示する画面を設定しています。今回は、activity_hello_sample.xmlに記述したものを画面として使うので、引数を「R.layout.activity_hello_sample」としています。この「R.…」という記述については、次節で解説します。
[Note] AppCompatActivity
Android Studioのウィザードに従ってプロジェクトを作成すると、アクティビティクラスの親クラスはAppCompatActivityとなっています。AppCompatActivityはサポートライブラリを利用するための基本となるアクティビティクラスです。サポートライブラリとは、新しいAPIレベルで追加された機能を古いAPIレベルでも使えるようにしたり、その他便利な機能が含まれています。R値
さて、「R.layout.activity_hello_sample」という記述ですが、これは、Rクラス内の定数を表します。
Android開発では、resフォルダ内のファイルやそのファイル中に記述された「@+id」の値などは、Androidアプリの管理対象として扱います。
管理がしやすいようにAndroidでは、そのファイルや値を識別するためのint型定数をR.javaというファイルに、Android Studioが自動追記する仕組みとなっています。これによって、アプリ内では、Rクラス中の定数(これをR値と呼ぶことにします)を使ってリソースをやり取りできるのです。
例えば、「R.layout.activity_hello_sample」という記述は、「res/layout/activity_hello_sample.xml」ファイルを指す定数です。
[Note] 「Rクラスが見つかりません」
Android開発を行っていくと、R値を指定したところ、よく見かけるコンパイルエラーとして「Rクラスが見つかりません」というのがあります。これは、レイアウトxmlやstrings.xmlなどのxmlファイルの記述ミスが原因のために、Rクラスが自動生成されないことが原因です。この場合は、Android Studio内のRクラスを探し出して修正したとしても意味がありません。xmlの記述が正しいかどうかを確認してください。
なお、Android StudioではR.javaは
app/build/generated/source/r
配下のパッケージ内に作成されます。
