繁体   English   中英

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

[英]Finish() isn't closing my second Activity, OnBackPressed() breaks the app

从 MainActivity 我打开一个像这样的新活动

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

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

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

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

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

        finish()
    }

不幸的是,没有任何反应,直到我按下完成第二个活动的后退按钮。 如果我使用onBackPressed以编程方式执行此操作,则会收到错误Fragment host is destroyed destroy

您已经像这样开始了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
            }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM