package hu.supercluster.overpasser.app.util;
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 org.androidannotations.annotations.AfterInject;
import org.androidannotations.annotations.EBean;
@EBean
public abstract class AbstractFragmentHandler {
private FragmentActivity fragmentActivity;
@AfterInject
protected void setFragmentActivity() {
fragmentActivity = getFragmentActivity();
}
protected abstract FragmentActivity getFragmentActivity();
public <T extends Fragment> T getFragment(Class<? extends T> typeToken, T defaultValue) {
T fragment = (T) fragmentActivity.getSupportFragmentManager().findFragmentByTag(typeToken.toString());
return (fragment != null) ? fragment : defaultValue;
}
public void showFragment(Fragment fragment, int containerResourceId) {
showFragment(fragment, containerResourceId, false);
}
public void showFragment(Fragment fragment, int containerResourceId, boolean addToBackStack) {
FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(containerResourceId, fragment, fragment.getClass().toString());
if (addToBackStack) {
fragmentTransaction.addToBackStack(null);
}
fragmentTransaction.commitAllowingStateLoss();
}
}