我有一個(gè) RecyclerView,它的 Adapter.class 在一個(gè)單獨(dú)的文件中,但是適配器中的 onClickListener 啟動(dòng)第二個(gè) Activity 與 startActivityForResult 一樣好。當(dāng)我有用戶輸入時(shí),我希望應(yīng)用程序?qū)?shù)據(jù)發(fā)送回第一個(gè)活動(dòng),該活動(dòng)僅在用戶使用我提供的按鈕時(shí)有效,但在用戶使用后退按鈕時(shí)無(wú)效,即使它在相應(yīng)功能中運(yùn)行相同的代碼也是如此。我將完全相同的代碼從按鈕復(fù)制到 onBackPressed、onPause 和 onDestroy,但在 Destroy 上運(yùn)行得太晚,另外兩個(gè)導(dǎo)致 resultCode 為 0 并且 data 在 Activity 1 中為 null。我已將 setResult 及其參數(shù)更改為所有可能的我發(fā)現(xiàn)的變體(RESULT_OK+Intent、Activity.RESULT_OK+Intent 和 RESULT_OK)。back = new Intent(this, MainActivity.class);btnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { back.putExtra("ANSWER", answer.getText().toString()); back.putExtra("QUESTION_ID", questionId); setResult(RESULT_OK, back); finish(); } });@Override public void onBackPressed() { super.onBackPressed(); back.putExtra("ANSWER", answer.getText().toString()); back.putExtra("QUESTION_ID", questionId); setResult(RESULT_OK, back); }@Override protected void onPause() { super.onPause(); back.putExtra("ANSWER", answer.getText().toString()); back.putExtra("QUESTION_ID", questionId); setResult(RESULT_OK, back); }如果我使用 Button,它會(huì)傳遞數(shù)據(jù)并將 resultCode 設(shè)置為 -1 就好了,但是當(dāng)我不使用按鈕但后退按鈕 resultCode = 0 并且 ActivityResult 中的數(shù)據(jù)為 null 時(shí)。我不知道有什么不同
resultCode 在按下按鈕和 finish() 后的值為 -1,但在按下后退按鈕后為 0
尚方寶劍之說(shuō)
2023-02-23 11:07:27