[Android] アプリの画面を遷移させる

アプリのメイン画面からステージ画面や設定画面、HELP画面などに移行させたいときにはどうするか。そんなときはActivityの画面遷移を使います。またActivityを変えないで画面を変える方法もあります。

move_1

MOVE→

activity_2

← RETURN

Android Studio 2.1.3
Android 7.0

 

sponsored link

画面遷移

 
画面遷移といえばActivityを使ったケースが考えられますが、Activity画面のを使わない方法もあります。

 

Activity画面遷移

 
アプリの画面を遷移したい場合には

  1. startActivity(Intent)
  2. startActivityForResult(Intent, int)

を使います
 
startActivityForResult(Intent, int)
は、遷移先からデータを受け取りたい場合で
onActivityResult(int, int, Intent)
で受け取ります

 
ここでは、画面の基本の遷移だけを扱ってみます。
データを遷移先に渡したり、遷移先からデータを受け取りたい場合は、アプリの画面遷移とActivity間のデータ転送 を参照してください。
 
MainActivity 画面で 「MOVE」 ボタンをタップするとSubActivity 画面に遷移、そこで [RETURN] ボタンのタップでMainActivity に戻る基本的なアプリを作ってみたいと思います 

MainActivity から SubActivity への遷移は

Intent のインスタンスを、現在のActivityから、遷移先のActivityを引数にいれて生成します

MainActivity.this, SubActivity.class
と設定して、テストで動かすぐらいであれば問題はないのですが、何度も同じ画面移動が繰り返されると参照が保持され続けてOut of Memoryとなる可能性があります
 
状況に応じてgetApplication()などに変更したほうがいいようです

 
SubActivity からの戻りは
Activity を終了させます

Manifestに SubActivity を追加

基本的にはこれだけです
まとめてみると
 
MainActivity.java

 
activity_main.xml

 
SubActivity.java

 
activity_sub.xml

 
AndroidManifest.xml

 
戻りは、ユーザーのリターンキーをタップしても戻れます

 

同一Activityでの画面変更

 
実はScreenの画面を変えたいだけの場合はわざわざActivityを使わなくてもできます。
特に画像を変えるだけのようなケースではこのほうが軽くなります。
 
Activityでの画面遷移と同じことができるようにしてみます。

activity_main.xml
activity_sub.xml
のレイアウトファイルはそのまま使います。簡単に言えば、MainActivityからこのレイアウトファイルを呼び出せばいいだけです。

MainActivity.java

 
setScreenMain()とsetScreenSub()を作ってそれぞれのレイアウトファイルを呼び出しています。画面ごとの機能が異なり複雑にならなければ使い道はありそうです。
 
 
関連ページ:

Ref: Activity