반응형
오랜만에 안드로이드 개발을 하려고 보니, startActivityForResult가 Deprecated가 되었습니다.
그러면 어떻게 동일한 결과를 받아 와야 할까 하고 찾아보니 registerForActivityResult를 선언하여 사용하는 방법입니다.
1. Callback 변수 생성
// Callback 변수
private val callback =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
when (result.resultCode) {
RESULT_OK -> {
// TODO
}
}
}
registerForActivityResult로 callback 변수를 생성해줍니다.
2. Activity 이동 실행
만약 FromActivity에서 ToActivity로 이동하는 변수라고 한다면
// FromActivity.kt
callback.launch(Intent(this, ToActivity::class.java))
이렇게 하면, From Activity에서 ToActivity로 이동하며, ToActivity가 종료되는 시점에 callback에서 결과를 반환받게 됩니다.
3. 결과 반환
// ToActivity.kt
intent.putExtra("result", "success")
setResult(RESULT_OK, intent)
finish()
위와 같이 이동한 Activity인 ToActivity에서 setResult후 finish()되면, FromActivity의 callback에서 위의 결과를 받아들이게 됩니다.
4. Callback 처리
// FromActivity.kt
// Callback 변수
private val callback =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
when (result.resultCode) {
RESULT_OK -> {
print(result.data!!.getStringExtra("result"))
}
}
}
※ 이 글은 워드프레스에 작성한 글과 동일한 작성자의 동일한 글입니다.
https://royfactory.net/2023/07/01/kotlin-registerforactivityresult/
반응형
'개발 창고 > Android' 카테고리의 다른 글
[Kotlin] TextView와 EditText에 텍스트를 입력하는 방법 (0) | 2023.07.25 |
---|---|
[Kotlin] "ContentValues"에 Null값 입력 방법 (putNull) (0) | 2023.07.24 |
[Kotlin] String 배열을 한 개의 String으로 만드는 방법 (0) | 2023.07.23 |
[Kotlin] "Floating Action Button" 사용하는 방법 (0) | 2023.07.23 |
[Kotlin] "For Loop"를 사용하는 방법 (0) | 2023.07.22 |