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

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

尚、こちらはJavaで Kotlinはこちら

Android Studio
2021.1.1

 




画面遷移

 
ここではActivityを使った画面遷移を考えてみますが、場合によってはActivityの画面遷移を使わない方法もあります。
1x1.trans - [Android] アプリの画面を遷移させる

Activityを変えて別のActivityへ画面遷移

  • 画面だけでなく使用する変数も全く異なるActivityへの移行
  • Activityの変更のため内部処理が多く、多少の遅れもあり得る

Fragmentを使用し画面表示を任せる

  • Activityは画面管理以外にも色々とtaskがあるので画面の変更だけに使うにはコスト高です。Activityを変えずにFragmentで画面を複数張り付けることが可能です。
     
    cat63 00 100x100 - [Android] アプリの画面を遷移させる
    FragmentをActivityからコードで設定してHello Worldを表示させてみましたが、今度はActivityからFra...

     

〇 同一Activityでの画面変更

  • 使用する変数は同じだが値が異なる、名簿などで名前、住所などをデータベースから取り出すだけで表示フォーマットは同じ様なケースなど
  • Activityの画面遷移に比べて素早くできる(そうなる場合に有効)
  • 1つのActivityが複雑な構成になってメンテナンスに支障が出ないように注意

 

 

Intent

 
「Activityを変えて画面遷移」をしたい場合には、Intent を使います。

IntentはActivityやServiceなどのコンポーネントを外部から起動するための仕組みです。 

ここでは、画面の基本の遷移だけを扱ってみます。
データを遷移先に渡したり、遷移先からデータを受け取りたい場合は、
アプリの画面遷移とActivity間のデータ転送 を参照してください。

 

startActivity(Intent)

 
MainActivity 画面で 「MOVE」 ボタンをタップするとSubActivity 画面に遷移、そこで [RETURN] ボタンのタップでMainActivity に戻る基本的なアプリを作ってみたいと思います。 

MainActivity から SubActivity への遷移は


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

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


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


Manifestに SubActivity を追加


基本的にはこれだけです。

 

サンプルコード

 
まとめてみます。その前にSubActivityとして別のJavaファイルを作らないといけません。

一番左の階層から「app」「java」「xxx.xxx.xxx」を選択して
「New」「Java Class」から新しいClass ファイルを作ります。

MainActivityと同じレベルにSubActivityができればOKです。
 

 
MainActivity.java


レイアウトですが、わかりやすくするために背景色を入れたり文字を大きくしたりしました。確認するだけなら文字列だけでも大丈夫です。
activity_main.xml


 
追加したjavaに記述します。
SubActivity.java


 
SubActivityで読んでいるレイアウトファイルも作成する必要がありますが、
「New」「XML」「Layout XML File」から作れます。あるいはFileからでも可能です。
 
1x1.trans - [Android] アプリの画面を遷移させる


 
activity_sub.xml


 
リソースファイルです。retrunというキーワードは予約語なので使えないですね
strings.xml


 
マニフェストです
AndroidManifest.xml


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

 

Kotlinではこのようになります。

https://akira-watson.com/android/kotlin/activity-trans.html

 
 
関連ページ:

References:
アクティビティ | Android Developers
一般的なインテント | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする