ActivityResultLauncher 사용해보기
startActivityForResult
가 deprecate 되었다! 그래서 ActivityResultLauncher
를 사용해 볼것이다RecyclerView
와 함께 사용해보자📄 MainActivity.kt
fun useActivityResultLauncher() {
startForActivityResult.launch(Intent(this, OhterActivity::class.java))
}
private val startForActivityResult: ActivityResultLauncher<Intent> =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == RESULT_OK) {
// 다른 액티비티를 다녀와서 실행할 작업 작성
val resultStr = result.data!!.getStringExtra("Data")
}
}
intent.getExtra
가 아닌 result.data!!.getExtra
로 확인해야한다.📄 RecyclerViewAdapter.kt
class RecyclerViewAdapter(val mContext: Context, val mList: List<ResponseData>) :
RecyclerView.Adatper<ViewHolder>(){
...
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.onBind(mList[position])
holder.itemView.setOnClickListener {
val activity = mContext as OtherActivity
// 인텐트에 필요한 정보를 담아 전달
activity.intent.putExtra("Data", mList[position].name)
activity.setResult(Activity.RESULT_OK, activity.intent)
activity.finish()
}
}
...
}