準備
build.gradle(app)
implementation("androidx.activity:activity-ktx:1.2.0-alpha06")
implementation("androidx.fragment:fragment-ktx:1.3.0-alpha06")
結果を受けとるActivity or Fragment側
xxx.kt
private val launcher: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == Activity.RESULT_OK) {
doSomething()
}
}
※公式ドキュメントではprepareCallとあるが、ライブラリバージョンアップ時にregisterForActivityResult()にメソッド名が変更されている
画面遷移時
xxx.kt
val intent = Intent(this, yyy::class.java)
launcher.launch(intent)
結果を送るActivity or Fragment側
yyy.kt
// fragmentから呼び出す場合はrequireActivity or getActivityでActivityのインスタンスを取得する
setResult(Activity.RESULT_OK)
値を渡したい場合は第二引数にIntentを渡す