package com.appolica.tabcontroller;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
/**
* An implementation of {@link ShowHideHandler} that uses {@link FragmentTransaction#show(Fragment)}
* and {@link FragmentTransaction#hide(Fragment)} to show/hide fragments.
*/
public class ShowHideFrHandler implements ShowHideHandler {
@Override
public FragmentTransaction show(FragmentTransaction transaction, Fragment fragment) {
return transaction.show(fragment);
}
@Override
public FragmentTransaction hide(FragmentTransaction transaction, Fragment fragment) {
return transaction.hide(fragment);
}
@Override
public void save(Bundle saveControllerState, Fragment fragment) {
boolean visible = isVisible(fragment);
saveControllerState.putBoolean(fragment.getTag(), visible);
}
@Override
public void restore(@Nullable Bundle savedControllerState, FragmentTransaction transaction, Fragment fragment) {
if (savedControllerState != null) {
boolean visible = savedControllerState.getBoolean(fragment.getTag());
if (visible) {
show(transaction, fragment);
} else {
hide(transaction, fragment);
}
}
}
@Override
public boolean isVisible(Fragment fragment) {
return !fragment.isHidden();
}
}