当从片段打开活动时,我发现Android startActivityForResult requestCode有一些奇怪的行为。我有一个类,我存储请求代码,因此它们在一个地方,我在传递请求代码时使用它们。但是我发现41,51会返回-1,而21 31就可以了,它似乎就是那个以1结尾的结果。令我感到困惑的是为什么会发生这种情况,但如果有人遇到过这种情况,请告诉我原因:)
public class RequestCodes {
// request codes
public static final int INTRO_ACTIVITY = 1;
public static final int MAIN_ACTIVITY = 2;
public static final int ABOUT_ACTIVITY = 3;
...
public static final int EXAMPLE_ACTIVITY = 41;
}
用于片段
Intent i = new Intent(getActivity(), ExampleActivity.class);
i.putExtra(Extras.ID, id);
startActivityForResult(i, RequestCodes.EXAMPLE_ACTIVITY);
onActivityResult在片段
中声明@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// used to see the request
showToast("Request Code = " + requestCode);
}
和示例活动中的onBackPressed
@Override
public void onBackPressed() {
Intent i = new Intent();
i.putExtra(Extras.ID, id);
setResult(RESULT_OK, i);
super.onBackPressed();
}