()onActivityForResult منقضی شد/ شیوه جدید در کاتلین

دی 22, 1400
1 دقیقه خواندن

اخیرا اندروید در لبه انقلابی جذاب با بروزرسانی به androidx.activity:activity-ktx به 1.2.0 قرار گرفته است. تابع startActivityForResult به نفع registerForActivityResult منقضی شد.

می خواهیم نحوه استفاده از آن را با مثال نشان دهیم.

مثال شماره یک

شیوه قبلی این چنین startActivity را فراخوانی و دریافت می کرد.


val intent = Intent(context, Activity1::class.java)
startActivityForResult(intent,REQUEST_CODE)
// Receiver 
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if(resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE){
        val value = data?.getStringExtra("input")
    }
}

اما در شیوه جدید باید از شیوه زیر استفاده نمائیم.

val intent = Intent(context, Activity1::class.java)
getResult.launch(intent)
// Receiver
private val getResult =
registerForActivityResult(
ActivityResultContracts.StartActivityForResult()) {
if(it.resultCode == Activity.RESULT_OK){
val value = it.data?.getStringExtra(“input”)
}
}
[\java]

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.