最終更新日:190206原本2018-10-11 

[Android] アプリの画面遷移とActivity間のデータ転送

ページをめくるようにアプリ画面全体を変えたり、設定画面、HELPに画面遷移させたいケースは多々あります。
 
またその時に何らかのデータも同時に転送して、場合によっては遷移先からデータを取得して戻りたい場合の実装方法について考えてみます。
 
intent 01 - [Android]  アプリの画面遷移とActivity間のデータ転送

Android Studio 3.2
Android 9.0

Activity 画面を遷移しデータを受け渡すアプリ

 
画面の遷移だけのケースはActivityの画面遷移にて説明しましたが

  1. 遷移したタイミングでデータを渡したい
  2. 遷移先から戻るタイミングでデータを受け取りたい

という場合にはIntentを使ってActivity間でデータを渡すことができます。
Activity間で共通のデータとして扱いたい場合は(積極的にお勧めしませんが)グローバル変数を使うこともできます。

ここではIntentを使って試してみます

  • startActivityForResult(Intent, int)
  • onActivityResult(int, int, Intent)

を使います。
 

 

putExtra & onActivityResult

 
MainActivity から SubActivity への遷移は

でしたが、ここでデータを渡すために
putExtra(name, value) を追加します
渡すデータの key(name) と value を putExtra に入れます
入れるデータの型指定はありません

 
別の Activity を開始する ではpublicなKeyを設定しています。これはputExtraによると
String: The name of the extra data, with package prefix.
とありますので、package名をprefixとして例えば、EXTRA_DATAというのを設定します。
 

 
data1 を渡すだけならこれでいいのですが、SubActivity からの返しを受け取りたいので

startActivityForResult と返ってくるリクエストコードを設定します
また、返ってきたときに受け取りは、onActivityResult で受け取ります

 

SubActivity データを受け取る

 
渡されたデータを受け取るには

 
受け取るときは、name とデータの型を指定します。
データが int の場合は、初期値を入れます
intent.getIntExtra(name, defaultValue)

その他、
getStringExtra(String name)
getBooleanExtra(String name, boolean defaultValue)
…etc.
Intent reference

 

[back] ボタンタップで元に戻り、データを返す

 
SubActivity から戻るときにデータを返すには同様に
putExtra(name, value)
を使います
 

 

MainActivity :元の画面でデータを受け取る

 
SubActivity からのデータを受け取るにはonActivityResult 内で受け取ります
この受け取りでは、MainActivity は onCreate() から始まらずに onActivityResult に到達します

色々追加して、以下のような機能でまとめてみます。
MainActivityで文字入力
SubActivityで受け取って表示
SubActivityから、受け取った文字列に追加して戻す
MainActivityではSubActivityから戻された文字列を表示
尚、Key nameはEXTRA_MESSAGEとして設定しました
 
MainActivity.java

 
遷移先のActivity
SubActivity.javaを作成します。
 
activity trans 001 - [Android]  アプリの画面遷移とActivity間のデータ転送
 
SubActivity.java

 
MainActivityのレイアウト
activity_main.xml

 
SubActivityのレイアウト
activity_sub.xml

 
リソースです
strings.xml

 
Manifest に SubActivity の記述も忘れずに、package名は適宜合わせてください。
AndroidManifest.xml

 

 
 
関連ページ:

Ref:
アクティビティ | Android Developers