resultCode 在按下按钮和 finish() 后的值为 -1,但在按下后退按钮后为 0,即使在相应函数中使用相同的代码也是如此
resultCode has value -1 after a buttonpress and finish() but 0 after backbutton pressed even with same code in corresponding functions
我有一个 RecyclerView,其 Adapter.class 在一个单独的文件中,但适配器中的 onClickListener 启动第二个 Activity 与 startActivityForResult 一样好。当我有用户输入时,我希望应用程序将数据发送回第一个 Activity,这仅在用户使用我提供的按钮时有效,但即使在 运行 使用后退按钮时也无效对应函数中的代码相同
我将完全相同的代码从按钮复制到 onBackPressed、onPause 和 onDestroy,但是在 Destroy 上获取 运行 太迟了,另外两个导致 resultCode 为 0 并且数据在 [=24= 中为空] 1. 我已将 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 时.我不知道有什么区别
在超类调用 onBackPressed
之前尝试设置结果:
@Override
public void onBackPressed() {
back.putExtra("ANSWER", answer.getText().toString());
back.putExtra("QUESTION_ID", questionId);
setResult(RESULT_OK, back);
super.onBackPressed();
}
我有一个 RecyclerView,其 Adapter.class 在一个单独的文件中,但适配器中的 onClickListener 启动第二个 Activity 与 startActivityForResult 一样好。当我有用户输入时,我希望应用程序将数据发送回第一个 Activity,这仅在用户使用我提供的按钮时有效,但即使在 运行 使用后退按钮时也无效对应函数中的代码相同
我将完全相同的代码从按钮复制到 onBackPressed、onPause 和 onDestroy,但是在 Destroy 上获取 运行 太迟了,另外两个导致 resultCode 为 0 并且数据在 [=24= 中为空] 1. 我已将 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 时.我不知道有什么区别
在超类调用 onBackPressed
之前尝试设置结果:
@Override
public void onBackPressed() {
back.putExtra("ANSWER", answer.getText().toString());
back.putExtra("QUESTION_ID", questionId);
setResult(RESULT_OK, back);
super.onBackPressed();
}