package forezp.com.douyalibrary.utils;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import java.util.List;
public class FragmentTabUtils implements RadioGroup.OnCheckedChangeListener {
private List<Fragment> fragments;
private RadioGroup rgs;
private FragmentManager fragmentManager;
private int fragmentContentId;
private int currentTab;
private OnRgsExtraCheckedChangedListener onRgsExtraCheckedChangedListener;
public FragmentTabUtils(FragmentManager fragmentManager, List<Fragment> fragments, int fragmentContentId, RadioGroup rgs, OnRgsExtraCheckedChangedListener onRgsExtraCheckedChangedListener) {
this.fragments = fragments;
this.rgs = rgs;
this.fragmentManager = fragmentManager;
this.fragmentContentId = fragmentContentId;
this.onRgsExtraCheckedChangedListener = onRgsExtraCheckedChangedListener;
rgs.setOnCheckedChangeListener(this);
((RadioButton) rgs.getChildAt(0)).setChecked(true);
}
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
for (int i = 0; i < rgs.getChildCount(); i++) {
if (rgs.getChildAt(i).getId() == checkedId) {
Fragment fragment = fragments.get(i);
FragmentTransaction ft = obtainFragmentTransaction(i);
getCurrentFragment().onStop();
if (fragment.isAdded()) {
fragment.onStart();
} else {
ft.add(fragmentContentId, fragment, String.valueOf(i));
ft.commit();
}
showTab(i);
if (null != onRgsExtraCheckedChangedListener) {
onRgsExtraCheckedChangedListener.OnRgsExtraCheckedChanged(radioGroup, checkedId, i);
}
}
}
}
private void showTab(int idx) {
for (int i = 0; i < fragments.size(); i++) {
Fragment fragment = fragments.get(i);
FragmentTransaction ft = obtainFragmentTransaction(idx);
if (idx == i) {
ft.show(fragment);
} else {
ft.hide(fragment);
}
ft.commit();
}
currentTab = idx;
}
private FragmentTransaction obtainFragmentTransaction(int index) {
FragmentTransaction ft = fragmentManager.beginTransaction();
return ft;
}
public int getCurrentTab() {
return currentTab;
}
public Fragment getCurrentFragment() {
return fragments.get(currentTab);
}
public OnRgsExtraCheckedChangedListener getOnRgsExtraCheckedChangedListener() {
return onRgsExtraCheckedChangedListener;
}
public void setOnRgsExtraCheckedChangedListener(OnRgsExtraCheckedChangedListener onRgsExtraCheckedChangedListener) {
this.onRgsExtraCheckedChangedListener = onRgsExtraCheckedChangedListener;
}
public static interface OnRgsExtraCheckedChangedListener {
public void OnRgsExtraCheckedChanged(RadioGroup radioGroup, int checkedId, int index);
}
}