Java 设置结果不工作
在我的第一个活动中,我这样称呼第二个活动:Java 设置结果不工作,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,在我的第一个活动中,我这样称呼第二个活动: Intent intent = new Intent(getActivity(), SecondActivity.class); startActivityForResult(intent, SOME_TAG); 然后在第二个活动中: @Override public void onBackPressed() { Intent returnIntent = new Intent(); setResult(AppCompatActivi
Intent intent = new Intent(getActivity(), SecondActivity.class);
startActivityForResult(intent, SOME_TAG);
然后在第二个活动中:
@Override
public void onBackPressed() {
Intent returnIntent = new Intent();
setResult(AppCompatActivity.RESULT_OK, returnIntent);
super.onBackPressed();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case SOME_TAG:
if (resultCode == AppCompatActivity.RESULT_OK) {
doStuff();
}
break;
default:
break;
}
}
回到第一个活动:
@Override
public void onBackPressed() {
Intent returnIntent = new Intent();
setResult(AppCompatActivity.RESULT_OK, returnIntent);
super.onBackPressed();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case SOME_TAG:
if (resultCode == AppCompatActivity.RESULT_OK) {
doStuff();
}
break;
default:
break;
}
}
由于某些原因,结果代码永远不等于result_OK,它每次都返回0。发生这种情况是因为您没有实际发送数据。您必须调用
finish()
,才能返回活动并基本上关闭它。以下是此方法的文档:。只需在onBackPressed()方法中的setResult(appcompativity.RESULT\u OK,returnIntent)
之后调用此函数即可。希望有帮助 你能确认你的onBackPressed()
方法正在被调用吗?它正在被调用,是的,并且你没有其他调用setResult
(例如,onPause()
或onStop()
)来覆盖它吗?当OP调用super.onBackPressed()
时,通常会导致调用finish())
.True,是否尝试将finish()
添加到方法?添加finish()有效。我以为它是内置在onBackPressed()的超级方法中的,但很高兴知道!谢谢,很高兴它成功了!您能接受这个答案吗?这样其他用户就知道您找到了解决方案?