亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

resultCode 在按下按鈕和 finish() 后的值為 -1,但在按下后退按鈕后為 0

resultCode 在按下按鈕和 finish() 后的值為 -1,但在按下后退按鈕后為 0

尚方寶劍之說 2023-02-23 11:07:27
我有一個 RecyclerView,它的 Adapter.class 在一個單獨的文件中,但是適配器中的 onClickListener 啟動第二個 Activity 與 startActivityForResult 一樣好。當我有用戶輸入時,我希望應用程序將數據發送回第一個活動,該活動僅在用戶使用我提供的按鈕時有效,但在用戶使用后退按鈕時無效,即使它在相應功能中運行相同的代碼也是如此。我將完全相同的代碼從按鈕復制到 onBackPressed、onPause 和 onDestroy,但在 Destroy 上運行得太晚,另外兩個導致 resultCode 為 0 并且 data 在 Activity 1 中為 null。我已將 setResult 及其參數更改為所有可能的我發現的變體(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,它會傳遞數據并將 resultCode 設置為 -1 就好了,但是當我不使用按鈕但后退按鈕 resultCode = 0 并且 ActivityResult 中的數據為 null 時。我不知道有什么不同
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

onBackPressed在超類調用之前嘗試設置結果:


     @Override

     public void onBackPressed() {

        back.putExtra("ANSWER", answer.getText().toString());

        back.putExtra("QUESTION_ID", questionId);

        setResult(RESULT_OK, back);

        super.onBackPressed();

     }


查看完整回答
反對 回復 2023-02-23
  • 1 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號