[안드로이드/코틀린] ActivityResultLauncher

박의진·2022년 9월 13일
0

안드로이드 코틀린

목록 보기
13/16

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()
profile
주니어 개발자의 개발일지

0개의 댓글