AndroidStudioのMainActivityクラスについて


今回はAndroidStudioのMainActivityクラスについてまとめていきます。

サンプルコード

MainActivity.kt
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」と同じ意味。