带有RESULT_OK的startActivityForResult和setResult不起作用

tva*_*nt2 1 android android-activity onactivityresult

我不知道这是预期的行为,但如果我这样做的OneActivity推出TwoActivity:

Intent intent = new Intent(this, TwoActivity.class);
startActivityForResult(intent, RESULT_OK);
Run Code Online (Sandbox Code Playgroud)

而在TwoActivity当我传回OneActivity:

Intent resultIntent = new Intent();
resultIntent.putExtra(SOURCE, TAG);
setResult(RESULT_OK, resultIntent);

finish();
Run Code Online (Sandbox Code Playgroud)

用上面的代码和覆盖onActivityResultOneActivity没有任何反应.onActivityResult似乎甚至没有被称为.但是,如果我RESULT_OK改为0,它就有效.

这是预期的吗?还有其他人经历过吗?

jos*_*u91 7

查看startActivityForResult方法的docs定义.它说:

requestCode int:如果> = 0,当活动退出时,将在onActivityResult()中返回此代码.

所以你的请求代码应该> = 0.如果你检查RESULT_OK响应代码的值,它是-1.请注意,请求代码与结果代码不同,这一点很重要.请求代码用于标识结果的请求,结果代码告诉您请求是否成功.