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

KotlinでのActivityの遷移とそれに伴ってデータを別Activityに送る、またそのActivityから何かのデータを受け取る方法について調べてみました。
 
1x1.trans - [Android & Kotlin ] アプリの画面遷移とActivity間のデータ転送


Android Studio
2024.1.1




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

 

画面遷移だけのKotlinのケースは、
 

Kotlinを使ってJavaと同じようにActivity間を遷移させる方法です。また同じActivity内で画面を変える方法もあります。 ...

 
にて説明しましたが、

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

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

以前は、startActivityForResult(Intent, int)とonActivityResult(int, int, Intent)
これらを使っていましたが
AndroidX Activity と Fragment で導入された Activity Result API を使用すること推奨されています応(Activity クラスでは使用できますが…)アクティビティの結果を取得する
 

 

MainActivity: putExtra & registerForActivityResult()

 

MainActivity から SubActivity への遷移は

 
別の Activity を開始する ではpublicなKeyを設定しています。これはputExtraによると

String: The name of the extra data, with package prefix.

とありますので、例えばpackage名をprefix(com.example.testactivitytransdata)としてEXTRA_MESSAGEというのを設定します。
 

 
このEXTRA_MESSAGEを使って putExtra(name, value) に渡すデータの key(name) と value を入れます
入れるデータの型指定はありません

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

registerForActivityResult()で受け取り、返ってくる結果が正常か、またリクエストコードの判定をします。it がActivityResult になります。

 

 

SubActivity: データを受け取る

 

渡されたデータを受け取るときには、型に合わせてgetString()などを使います

 

name とデータの型を指定します。
データが int の場合は、初期値を入れますがString型ではいりません。
その他、
getBooleanExtra(String name, boolean defaultValue)
…etc.
Intent reference

 

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

 

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

 

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

 

SubActivity からのデータを受け取るにはregisterForActivityResult()から、RESULT_OKであるか判定してデータを受け取ります。

 

サンプルコード

 

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

MainActivity.kt

 
遷移先のActivity
SubActivity.ktを作成し
コードを記述します。

SubActivity.kt

 
以下はレイアウトやリソースです

activity_main.xml

 

SubActivityのレイアウト用のxmlファイルを作成
activity_sub.xml

 
リソースです

strings.xml

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

 
View Binding の設定
build.gradle

 

 

 
References:
アクティビティの結果を取得する | Android デベロッパー | Android
Activity | Android Developers
別の Activity を開始する | Android Developers
Intent | Android Developers

シェアする

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

フォローする