Loading fragments can be tricky in certain scenarios.
But if you use the following code snippet to load fragments in your container, life becomes much simpler with this code.
public void loadFragment(Fragment fragment, boolean boolAddToBackStack, AppCompatActivity mActivity) {
FragmentManager fragmentManager = mActivity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
String backStateName = fragment.getClass().getName();
boolean fragmentPopped = fragmentManager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped) {
//fragment not in back stack, create it.
fragmentTransaction.replace(R.id.frame_layout_container, fragment);
if (boolAddToBackStack) {
fragmentTransaction.addToBackStack(backStateName);
}
fragmentTransaction.commit();
}
}
Method loadFragment
takes three parameters, they are:
Fragment fragment:
Target fragment to be loadedboolean boolAddToBackStack:
If you want your fragment to be shown on back pressed send this flag as trueAppCompatActivity mActivity:
Current activity instanceCameraFragment cameraFragment = new CameraFragment();
loadFragment(cameraFragment, true, this);
Download complete source code from Github repository