在我的第一个活动中,我用这种方式调用第二个活动:
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;
}
}
由于某种原因,结果代码永远不会等于RESULT_OK,它每次都会返回0。
答案 0 :(得分:2)
这种情况正在发生,因为您实际上并未将数据发回。您必须致电finish()
返回活动并基本上关闭它。以下是此方法的文档:https://developer.android.com/reference/android/app/Activity.html#finish()。只需在setResult(AppCompatActivity.RESULT_OK, returnIntent)
方法中onBackPressed()
后调用即可。希望它有所帮助!