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

问题描述 投票:0回答:1

从MainActivity中,我像这样打开一个新的Activity

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

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

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

最后,我尝试将currentExercise传递给MainActivity并像这样完成第二个活动

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

        finish()
    }

不幸的是,直到我按下后退按钮完成第二个活动为止,什么都没有发生。如果使用onBackPressed以编程方式进行操作,则会收到错误Fragment host is destroyed

android kotlin android-activity activity-finish
1个回答
0
投票

您已经像这样启动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
            }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.