Intent 로 액티비티를 실행시키고 결과를 되돌려 받는 방법은 두가지가 있다.
- startActivityForResult() 함수를 이용하는 방법과
- ActivityResultLauncher 를 이용하는 방법
- startActivityForResult() 은 deprecated
1.startActivityForResult
- intent를 발생시키기 위한 메소드
- 인텐틀르 발생시킨 후에 되돌아왔을 때 사후처리를 위한 것
- 되돌아 왔을 때 사후 처리는 onActivityResult 함수를 오버라이드 받아서 처리한다.
- Request code를 통해서 어떤 요청인지 구분한다.
- deprecated가 됨
val intent: Intent = Intent(this, DetailActivity::class.java)
intent.putExtra("id", "first")
startActivityForResult(intent, 10)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(requestCode==10 && resultCode== RESULT_OK){
val result: String? = data?.getStringExtra("result")
resultView.text = "result : $result"
}
}
2. ActivityResultLauncher
- 액티비티를 실행시키고 실행 결과를 획득
- 퍼미션 조정 결과 획득
// 해당 코드에서 인텐트 실행두 되돌아 왔을때 실행해야할 코드 작성한 것
val requestActivity: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){
resultView.text = "result : ${it.data?.getStringExtra("result")}"
}
button2.setOnClickListener {
val intent: Intent = Intent(this, DetailActivity::class.java)
intent.putExtra("id","second")
requestActivity.launch(intent)
}
3. 결과 되돌리기
- Extra Data를 통해서 결과를 되돌리면 된다.
- setResult() 로 상태 등록
intent.putExtra("result", "hello $id")
setResult(RESULT_OK, intent)
finish()