Android-Fragment-Handler

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

import bd.com.cmed.cmedhealthandroidv2.R;

public class FragmentHandler {
    /**
     * Load fragment by replacing all previous fragments
     * @param fragment
     */
    public static void loadFragment(Fragment fragment, Context context) {
        popChildFragment(context);

        FragmentManager fragmentManager=((FragmentActivity)context).getSupportFragmentManager();
        FragmentTransaction t = fragmentManager.beginTransaction();
        t.replace(R.id.fragmentContainer,fragment);
        fragmentManager.popBackStack();
        // TODO: we have to allow state loss here
        // since this function can get called from an AsyncTask which
        // could be finishing after our app has already committed state
        // and is about to get shutdown.  What we *should* do is
        // not commit anything in an AsyncTask, but that's a bigger
        // change than we want now.
        t.commitAllowingStateLoss();

    }

    /**
     * Load fragment by replacing all previous fragments and assigning tag
     * @param fragment, tag
     */
    public static void loadFragment(Fragment fragment, String tag,Context context) {
        popChildFragment(context);

        FragmentManager fragmentManager=((FragmentActivity)context).getSupportFragmentManager();
        FragmentTransaction t = fragmentManager.beginTransaction();
        t.replace(R.id.fragmentContainer, fragment, tag);
        t.addToBackStack(null);

        // The following pop command was creating problems when loading the
        // required fragment. Just on pushing the fragment to stack, it was
        // being popped and hence, the search on view objects was creating an
        // error.
        // fragmentManager.popBackStack();

        // TODO: we have to allow state loss here
        // since this function can get called from an AsyncTask which
        // could be finishing after our app has already committed state
        // and is about to get shutdown.  What we *should* do is
        // not commit anything in an AsyncTask, but that's a bigger
        // change than we want now.
        t.commitAllowingStateLoss();
    }


    /**
     * Load Fragment on top of other fragments
     * @param fragment
     */
    public static void loadChildFragment(Fragment fragment,Context context) {
        FragmentManager fragmentManager=((FragmentActivity)context).getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.fragmentContainer, fragment, "main")
                .addToBackStack(null)
                .commit();
    }

    /**
     * Load Fragment on top of other fragments by removing last fragment
     * @param fragment, flag
     */
    public static void loadChildFragment(Fragment fragment, boolean flag,Context context) {
        popChildFragment(context);

        FragmentManager fragmentManager=((FragmentActivity)context).getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.fragmentContainer, fragment, "main")
                .addToBackStack(null)
                .commit();
    }

    public static void popChildFragment(Context context) {
        FragmentManager fragmentManager=((FragmentActivity)context).getSupportFragmentManager();

        if (fragmentManager.getBackStackEntryCount() > 0) {
            fragmentManager.popBackStack();
        }
    }
}