Skip to content

Instantly share code, notes, and snippets.

@aftabsikander
Created January 11, 2018 14:03
Show Gist options
  • Select an option

  • Save aftabsikander/df8bc22959f901e876eaa390210f9ffa to your computer and use it in GitHub Desktop.

Select an option

Save aftabsikander/df8bc22959f901e876eaa390210f9ffa to your computer and use it in GitHub Desktop.

Revisions

  1. aftabsikander created this gist Jan 11, 2018.
    141 changes: 141 additions & 0 deletions FragmentUtils.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,141 @@
    package com.app.example.util;

    import android.os.Bundle;
    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 android.support.v7.app.AppCompatActivity;

    import com.app.advanceautoparts.R;


    public class FragmentUtils {
    public static boolean sDisableFragmentAnimations = false;

    /**
    * Push fragment into container
    *
    * @param activity required to get fragment manager
    * @param containerId id of container where fragment will be added
    * @param fragment fragment to add
    * @param bundle data for fragment
    * @param tag name of fragment to add
    * @param addToBackStack true if you want to add in back stack
    * @param animate fragment
    */
    public static void pushFragment(FragmentActivity activity, int containerId, Fragment fragment,
    Bundle bundle, String tag, boolean addToBackStack,
    boolean animate) {

    try {
    if (fragment == null) {
    return;
    }

    if (bundle != null) {
    fragment.setArguments(bundle);
    }

    FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();

    if (animate) {
    ft.setCustomAnimations(R.anim.slide_in_right
    , R.anim.slide_out_left
    , R.anim.slide_in_left
    , R.anim.slide_out_right);
    }

    if (addToBackStack) {
    ft.addToBackStack(null);
    }

    if (!fragment.isAdded()) {
    ft.replace(containerId, fragment, tag).commit();
    }

    } catch (IllegalStateException e) {
    e.printStackTrace();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }

    /**
    * Remove added fragment from specific container id
    *
    * @param activity to get Fragment Manager
    * @param containerId of frame layout
    */
    public static void removeFragmentFromContainer(AppCompatActivity activity, int containerId) {
    FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
    if (ft != null) {
    ft.remove(activity.getSupportFragmentManager().findFragmentById(containerId));
    ft.commit();
    }
    }

    /**
    * Removes all fragments from backstack
    *
    * @param activity required to get fragment manager
    */
    public static void removeAllFragmentsFromBackStack(AppCompatActivity activity) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    FragmentUtils.sDisableFragmentAnimations = true;
    if (fragmentManager != null) {
    int count = fragmentManager.getBackStackEntryCount();
    for (int i = count; i >= 0; i--) {
    fragmentManager.popBackStackImmediate(null,
    FragmentManager.POP_BACK_STACK_INCLUSIVE);

    // fragmentManager.popBackStack();
    }
    }
    }

    /**
    * Checks if specific fragment is in back stack
    *
    * @param activity required to get fragment manager
    * @param tag of fragment to find
    * @return
    */
    public static boolean isFragmentInStack(AppCompatActivity activity, String tag) {
    boolean inStack = false;

    FragmentManager fragmentManager = activity.getSupportFragmentManager();

    if (fragmentManager != null) {
    Fragment fragment = fragmentManager.findFragmentByTag(tag);
    if (fragment != null) {
    inStack = true;
    }

    }

    return inStack;
    }

    public static Fragment getFragmentByTag(AppCompatActivity activity, String tag) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    if (fragmentManager != null) {
    Fragment fragment = fragmentManager.findFragmentByTag(tag);
    if (fragment != null)
    return fragment;
    }
    return null;
    }


    public static void removeFragmentByTag(AppCompatActivity activity, String tag) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    if (fragmentManager != null) {
    Fragment fragment = fragmentManager.findFragmentByTag(tag);
    if (fragment != null)
    fragmentManager.beginTransaction().remove(fragment).commit();
    }

    }
    }