registerForActivityResult
registerForActivityResult는 ActivityResultContract와 ActivityResultCallback을 가져와서 다른 activity를 실행하는 데 사용할 ActivityResultLauncher를 반환합니다.
즉, registerForActivityResult를 사용하면 다른 액티비티로부터 받아온 intent와 result code를 통해 원하는 데이터를 가져올 수 있습니다.
1. ActivityResult를 받고자 하는 액티비티에 Callback 등록
val resultLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
if (result.resultCode == RESULT_OK) {
val name = result.data?.getStringExtra("name") ?: ""
val age = result.data?.getStringExtra("age") ?: ""
}
}
2. 데이터를 받아올 다른 액티비티 실행
binding.btnToSecond.setOnClickListener {
Intent(this, SecondActivity::class.java).let {
resultLauncher.launch(it)
}
}
3. 다른 액티비티에서 데이터 보내기
binding.btnSend.setOnClickListener {
val intent = Intent(this, MainActivity::class.java).apply {
putExtra("name", "John")
putExtra("age", "30")
}
setResult(RESULT_OK, intent)
finish()
}
728x90
반응형
'안드로이드 > 개념' 카테고리의 다른 글
[Android] sealed class (0) | 2023.07.30 |
---|---|
[Android] 런타임 권한 요청하기 (0) | 2023.07.28 |
[Android] Serializable vs Parcelable (0) | 2023.07.21 |
[Android] Timer와 Thread (0) | 2023.07.18 |
[Android] 명시적 인텐트와 암시적 인텐트 (0) | 2023.07.16 |