为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信