package com.example.development.androidmsample.utils;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
public class Navigator{
@NonNull
protected final FragmentManager mFragmentManager;
@IdRes
protected final int mDefaultContainer;
public Navigator(@NonNull final FragmentManager fragmentManager, @IdRes final int defaultContainer){
mFragmentManager = fragmentManager;
mDefaultContainer =defaultContainer;
}
public void setRootFragment(final Fragment startFragment){
if(getSize() > 0){
this.clearHistory();
}
this.replaceFragment(startFragment);
}
private void replaceFragment(final Fragment fragment) {
mFragmentManager.beginTransaction()
.replace(mDefaultContainer, fragment, fragment.getClass().getSimpleName())
.commitAllowingStateLoss();
}
public int getSize() {
return mFragmentManager.getBackStackEntryCount();
}
public void clearHistory() {
//noinspection StatementWithEmptyBody - it works as wanted
while(mFragmentManager.popBackStackImmediate());
}
}