1.在BaseActivity中重写 为了避免重复最好用不同的requestCode
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); List<Fragment> fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { if (null != fragment) { fragment.onActivityResult(requestCode, resultCode, data); } } } }2.在BaseFragment中重写
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); List<Fragment> fragments = getChildFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { if (null != fragment) { fragment.onActivityResult(requestCode, resultCode, data); } } } }
3.如果是dialogFragment 取决于父容器
protected void selectPhotoFromGallery() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); Fragment parentFragment = getParentFragment(); if (null != parentFragment) { parentFragment.startActivityForResult(intent, CAMERA_SELECT); } else { startActivityForResult(intent, CAMERA_SELECT); } }
4.如果是fragment in fragment,不要用getChildFragment
getChildFragmentManager()-->getFragmentManager() .beginTransaction() .replace(R.id.profile_content, fragment) .commit();调用时 不要用getActivity.startActivity...
protected void selectPhotoFromGallery() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, CAMERA_SELECT); }