[Androidアプリ開発入門] Activity間の遷移を実装する

サエコ
Activity間を遷移したいわよ〜。
キャミィ
Activity間の遷移には、Intentを使うわ。

Activity間の遷移には、IntentとContext#startActivityを使います。ActivityはContextを継承しているので、startActivityを呼び出すことができます。startActivityは以下のように使用します。

val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

Activityの遷移を行いたい箇所に上記のコードを書いてもいいんですが、遷移が増えると遷移のためのコードがあちこちに散らばってしまい、大変なことになりそうです。

そこで、上記のコードを遷移元ではなく遷移先のActivityで書くようにします。こうすることで、Activity遷移のためのコードを1回書けば、どこからでも遷移処理を実行できるようになります。どこからでもこの処理を呼び出せるように、companion object内にメソッドを定義します。

class SecondActivity : AppCompatActivity() {

    companion object {
        fun start(context: Context) {
            val intent = Intent(context, SecondActivity::class.java)
            context.startActivity(intent)
        }
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
    }
}

呼び出し元では、以下のようにしてActivity遷移の処理を呼び出します。元の実装よりも、読みやすいコードになったのではないでしょうか。

button.setOnClickListener {
    SecondActivity.start(this)
}