平凡エンジニアからの出発

一に努力、二に理想、三に積小為大。

【AndroidTraining】Activity 2 画面を切り替えよう

Lesson

Activity 2
画面を切り替えよう

Mission

下記の仕様を満たすアプリを作りましょう。

  • SubActivityへの画面遷移をする
  • MainActivityとSubActivityのライフサイクルのログを出力する

Snap Shot

f:id:atuyan39:20210412003617p:plainf:id:atuyan39:20210412003621p:plain

ログ

◆Mainアクティビティ起動
2021-04-11 22:53:41.323 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onCreate
2021-04-11 22:53:41.412 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onStart
2021-04-11 22:53:41.413 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onPostCreate
2021-04-11 22:53:41.413 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onResume
2021-04-11 22:53:41.414 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onResumeFragments
2021-04-11 22:53:47.898 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onPause

◆Subアクティビティ起動(Mainアクティビティはバックグラウンドへ)
2021-04-11 22:53:47.952 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onStart
2021-04-11 22:53:47.952 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onPostCreate
2021-04-11 22:53:47.953 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onResume
2021-04-11 22:53:47.953 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onResumeFragments
2021-04-11 22:53:48.484 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onStop
2021-04-11 22:53:48.484 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onSaveInstanceState

◆Subアクティビティ終了(Mainアクティビティがフォアグラウンドへ)
2021-04-11 22:53:54.943 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onPause
2021-04-11 22:53:54.969 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onRestart
2021-04-11 22:53:54.969 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onStart
2021-04-11 22:53:54.970 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onResume
2021-04-11 22:53:54.970 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle: onResumeFragments
2021-04-11 22:53:55.528 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onStop
2021-04-11 22:53:55.532 29929-29929/com.hatenablog.atuyan39.androidtraining D/LifeCycle_Sub: onDestroy

Step by Step

  1. 前回の環境(Activity 1)を用意する
  2. 新しくActivity(TrainingSubActivity.java)を追加する
  3. ライフサイクルのメソッドをoverrideする(コピペ)
    • onCreate
    • onRestart
    • onStart
    • onRestoreInstanceState
    • onPostCreate
    • onResume
    • onResumeFragments
    • onPause
    • onStop
    • onSaveInstanceState
    • onDestory
  4. ButtonとTextのViewを各Activityに追加する
  5. TrainingActivityのボタン押下時に、SubActivityを起動する処理を追加する
        Button button = findViewById(R.id.activity_2_button);
        button.setOnClickListener((v -> {
            // アクティビティを起動する
            Intent intent = new Intent(this, TrainingSubActivity.class);
            startActivity(intent);
        }));

6 . TrainingSubActivityのボタン押下時に、SubActivityを終了する処理を追加する

        Button button = findViewById(R.id.activity_2_button_sub);
        button.setOnClickListener(v -> {
            // このActivityを終了させる
            finish();
        });

Code

Activity 2 · atuyan39/AndroidTraining@947a89c · GitHub

Reference

とくになし

Memo

startActivityの仕組みを理解したい