반응형
오랜만에 안드로이드 개발을 하려고 보니, 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"))
}
}
}
반응형
'개발 창고 > Android' 카테고리의 다른 글
[Kotlin] How To Enter Text in TextView and EditText (2) | 2023.12.09 |
---|---|
[Kotlin] How To Place Overlapping using Frame Layout (0) | 2023.12.09 |
[Kotlin] How to make an array of strings a string (0) | 2023.12.07 |
[Kotlin] How to display Floated buttons on the screen (4) | 2023.12.07 |
[Kotlin] How to sort arrays in order (0) | 2023.12.06 |