The structure of the app is like this:
tabHost (in Activity) -> contains -> TabFragment(extend base container fragment) 1. The code in Activity:
tabHost.addTab( tabHost.newTabSpec("home").setIndicator("", getResources().getDrawable(R.drawable.btn_home)), HomeFragment.class, null); 2. The code in HomeFragment (Notice that HomeFragment is not the actual function but a container like this, and it extend BaseContainerFragment):
public class HomeFragment extends BaseContainerFragment { public Home homeFrag; private boolean mIsViewInited; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.container_fragment, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (!mIsViewInited) { mIsViewInited = true; initView(); } } private void initView() { homeFrag = new Home(); replaceFragment(homeFrag, false); } } 3. BaseContainerFragment
public class BaseContainerFragment extends Fragment { public void replaceFragment(Fragment fragment, boolean addToBackStack) { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); if (addToBackStack) { transaction.addToBackStack(null); } transaction.replace(R.id.container_framelayout, fragment); transaction.commit(); } public boolean popFragment() { boolean isPop = false; if (getChildFragmentManager().getBackStackEntryCount() > 0) { isPop = true; getChildFragmentManager().popBackStack(); } return isPop; } } 4. In the Home (The actual content of the fragment)
UploadType fragment = new UploadType(); Bundle bundle = new Bundle(); bundle.putString("form_type", "request"); fragment.setArguments(bundle); ((BaseContainerFragment)getParentFragment()).replaceFragment(fragment, true); 5. And in the UploadType , I call the camera activity but onActivityResult is only return in the main activity.
startActivityForResult(intent, REQUEST_CAMERA); public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d("test1", "result2"); super.onActivityResult(requestCode, resultCode, data); } How can I trigger the onActivityResult at UploadType? Thanks for help.