今回はAndroidStudioのMainActivityクラスについてまとめていきます。
##サンプルコード
package com.websarva.wings.android.hellosample
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
プロジェクトを作成すると、上記のコードが自動で入力されます。
それぞれにどんな意味があるのかを噛み砕いれいきます。
##解説
####class MainActivity : AppCompatActivity()
∟MainActivityと言う子クラスに、AppCompatActivityと言う親クラスの継承を定義している。
∟つまり、MainActivityクラスは、AppCompatActivityクラスの要素を引き継ぐことができる。
AppCompatActivity
∟AppCompatActivityクラスは、Activityクラスの子クラスです。かつては、Activityクラスを継承して、アクティビティクラスを作成していましたが、通常は、AppCompatActivityクラスを継承してアクティビティクラスを作成します。
つまり、
Activityクラス
∟AppCompatActivityクラス
∟MainActivityクラス
という構造になっている。
AppCompatActivityクラスのonCreate()
メソッドは、androidアプリが起動すると、実行されるメソッドです。
∟画面作成やデータの用意など、初期処理として必要なものを記述する。
##onCreate()メソッドの中身
####super.onCreate(savedInstanceState)
∟親クラスのonCreateメソッドを呼び出している(AppCompatActivity)
∟アクティビティクラスはActivityクラスをを継承して作る必要があります。
∟onCreateメソッドを、Activityクラスから、オーバーライドする必要があるため、この記述が必要があります。
####setContentView(R.layout.activity_main)
∟このアプリで表示する画面の設定をしています。
∟今回は activity_main.xmlに記述したものを画面として使うので、引数を 「R.layout.activity_main」としています。
##リソースを管理してくれるRクラス
setContentView(R.layout.activity_main)
で使用されている「R...」について見ていきます。
android開発では、resフォルダ内のファイルや「@+id」の値などのリソースを、Kotlinクラスから効率よく利用できるように、Androidではそのファイルや値を識別する為のJavaのint型定数を指定することになっています。
このint定数をまとめて記述するクラスとして、Rクラス
を用意し、そこにAndroidStudioの方で自動追記してくれる仕組みになっています。
これにより、Rクラス中の定数(R値と呼ぶ)
を使ってリソースをやり取りできる。
ちなみに、 「R.layout.activity_main」
は、「res/layout/activity_main」
と同じ意味。