Activity中嵌套Fragment,在Fragment中使用startActivityForResult方法会出现在Fragment中onActivityResult()方法不回调的情况。下面是我的解决方法:
1、在Fragment依附的Activity中重写onActivityResult()方法:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);//这行不可以删除,否则Fragment中onActivityResult()无法回调 if (resultCode != RESULT_OK) return; switch (requestCode) { ... default: break; } }
2、在Fragment中调用startActivityForResult方法:
fragment.startActivityForResult(new Intent(context, CommentActivity.class).putExtra(COMMENTID, commentId), requestCode);
要用当前Fragment对象调用startActivityForResult方法,如果使用getActivity()上下文调用,onActivityResult()方法只会在Activity中响应。
3、在Fragment中重写onActivityResult()方法:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK) return; switch (requestCode) { ... default: break; } }这样既可实现Fragment中onActivityResult()方法回调,希望对大家有所帮助