Finish() 没有关闭我的第二个活动,OnBackPressed() 破坏了应用程序



从主活动打开一个新的活动,像这样

val intent = Intent(context, ExerciseCatalogueActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)

然后我有一个 clickListener 在我的第二个活动中调用一个方法

holder.itemView.setOnClickListener {
exerciseClickListener.exerciseIsClicked(currentExercise)
}

最后,我尝试将当前练习传递给主活动并像这样完成第二个活动

override fun exerciseIsClicked(exercise: Exercise) {
setResult(Activity.RESULT_OK, Intent().apply{ putExtra("key", exercise) })
finish()
}

不幸的是,什么也没发生,直到我按下后退按钮完成第二个活动。如果我用onBackPressed以编程方式执行此操作,则会出现错误Fragment host is destroyed

你已经开始像这样ExerciseCatalogueActivity了:

val intent = Intent(context, ExerciseCatalogueActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)

现在,在您的第二个活动 (ExerciseCatalogueActivity( 中,发送如下数据:

val result = Intent()
result.putExtra("key", exercise)
setResult(Activity.RESULT_OK, result)
finish()

然后,像这样处理MainActivity中的结果:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
val task = data?.getStringExtra("key")
task?.let {
//Do something here with the returned value
}
}
}

最新更新