我有 2 个类 MainActivity 和 EditActivity。我尝试在 MainActivity 中使用 registerForActivityResult() 启动 EditActivity,但应用程序立即退出;startActivity() 工作正常,但 registerForActivityResult() 符合我的目的,即将结果返回给 MainActivity。启动 EditActivity 的函数如下。
MainActivity.kt
fun launchEditView(position: Int) {
val getResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if(it.resultCode == Activity.RESULT_OK){
val value = it.data?.getStringExtra("alternative")
listOfTasks.set(position, value.toString())
adapter.notifyDataSetChanged()
saveItems()
}
}
// first parameter is the context, second is the class of the activity to launch
val intent = Intent(this, EditActivity::class.java)
intent.putExtra("taskName", listOfTasks.get(position))
getResult.launch(intent)
}
更新:错误是
java.lang.IllegalStateException: LifecycleOwner com.example.simpletodo.MainActivity@3a90598 is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
at androidx.activity.result.ActivityResultRegistry.register(ActivityResultRegistry.java:123)
at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:682)
at androidx.activity.ComponentActivity.registerForActivityResult(ComponentActivity.java:691)
at com.example.simpletodo.MainActivity.launchEditView(MainActivity.kt:86)