簡體   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