diadia

興味があることをやってみる。自分のメモを残しておきます。

アクティビティから結果を取得する

参考

アクティビティから結果を取得する

[Kotlin] Androidの画面遷移とアクティビティ間の値の受渡し

https://araramistudio.jimdo.com/:AndroidでActivityから結果を受け取る

概要

必要な要素は、画面遷移元ではstartActivityForResult()メソッド、そしてonActivityResult()メソッドである。 また画面遷移元へデータを渡す画面遷移先ではsetResult()メソッドを実行する。

startActivityForResult()の使い方

startActivityForResult()メソッドの引数には通常のintentの他、リクエストコードを渡す必要がある。 リクエストコードは自分で設定する値だが、Int型のデータである必要がある。

val REQUEST_CODE_LOGIN: Int = 1;
...省略...
startActivityForResult(intent, REQUEST_CODE_LOGIN)

onActivityResult()メソッドの使い方

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
...省略...
}

第一引数requestCodeは、startActivityForResultで渡した引数(整数値)である。 第二引数はActivity.RESULT_OKまたはActivity.RESULT_CANCELEDである。これらは予め整数値が定められている。 第三引数は結果のデータが入った Intentである。

setResult()メソッドの使い方

setResult())

setResult()メソッドは画面遷移先から画面遷移もとに戻る時に使うメソッドである。

val intent = Intent()
intent.putExtra("name1", "value1")
setResult(RESULT_OK, intent)
finish()

Activity.getCallingActivity()

Activity.getCallingActivity() は、startActivityForResult()の呼び出し元がわかる。startActivity()だとわからない。 https://developer.android.com/reference/android/app/Activity.html#getCallingActivity())

Intentを用いたActivity間のやりとり