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

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

intent 01 - [Android]  アプリの画面遷移とActivity間のデータ転送 
またその時に何らかのデータも同時に転送して、場合によっては遷移先からデータを取得して戻りたい場合の実装方法について考えてみます。

Android Studio 3.5.3
API 29



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

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

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

という場合にはIntentを使ってActivity間でデータを渡すことができます。

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

ここではIntentを使って以下のAPIを試してみます。

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

 

 

putExtra & onActivityResult

 
MainActivity から SubActivity への遷移は

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

 
Googleのドキュメント、別の Activity を開始する ではpublicなKeyを設定しています。これはputExtraのReferenceによると
String: The name of the extra data, with package prefix.
とありますので、package名(この例では testactuvitytransdata)を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 はLife Cycleの 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 の記述も忘れずに。
AndroidManifest.xml

 

 
 
関連ページ:

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

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません




シェアする

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

フォローする