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

ページをめくるようにアプリ画面全体を変えたり、設定画面、HELPに画面遷移させたいケースは多々あります。

またその時に何らかのデータも同時に転送して、場合によっては遷移先からデータを取得して戻りたい場合の実装方法について考えてみます。

activity2_1

activity2_2

activity2_3

Android Studio 2.2
Android 7.0

 

sponsored link

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

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

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

という場合にはIntentを使ってActivity間でデータを渡すことができます。
またグローバル変数として扱う事もできます。

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

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

を使います
 
こんなアプリを作ってみたいと思います

  1. MainActivity :「move」 ボタンをタップすると画面遷移し、データを渡す
  2. SubActivity :データを受け取る
  3. SubActivity :[back] ボタンのタップで元に戻り、データを返す
  4. MainActivity :元の画面でデータを受け取る

1. putExtra & onActivityResult 

 
MainActivity から SubActivity への遷移は

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

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

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

 

2. SubActivity データを受け取る

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

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

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

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

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

 

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

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

色々追加して、まとめてみると
 
MainActivity.java

 
SubActivity.java

 
activity_main.xml

 
activity_sub.xml

 
Manifest に SubActivity の記述も忘れずに
AndroidManifest.xml

  
関連ページ:

Ref: Activity