اخیرا اندروید در لبه انقلابی جذاب با بروزرسانی به 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]