package com.adapter;
import java.util.ArrayList;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class FragmentTabAdapter implements OnCheckedChangeListener {
private List<Fragment> fragments = new ArrayList<Fragment>();
private FragmentActivity baseFragmentActivity;
private int currentIndex;
private int fragmentContentId; // Activity中所要被替换的区域的id
public FragmentTabAdapter(FragmentActivity baseFragmentActivity, List<Fragment> fragments, RadioGroup radioGroup, int fragmentContentId) {
this(baseFragmentActivity, fragments, radioGroup, fragmentContentId, 0);
}
public FragmentTabAdapter(FragmentActivity baseFragmentActivity, List<Fragment> fragments, RadioGroup radioGroup, int fragmentContentId, int currentIndex) {
this.baseFragmentActivity = baseFragmentActivity;
this.fragments = fragments;
this.fragmentContentId = fragmentContentId;
this.currentIndex = currentIndex;
this.baseFragmentActivity = baseFragmentActivity;
this.fragments = fragments;
this.fragmentContentId = fragmentContentId;
FragmentTransaction ft = baseFragmentActivity.getSupportFragmentManager().beginTransaction();
ft.add(fragmentContentId, fragments.get(currentIndex));
ft.commit();
radioGroup.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
for (int i = 0; i < group.getChildCount(); i++) {
if (group.getChildAt(i).getId() == checkedId) {
Fragment f = fragments.get(i);
// 暂停当前Fragment
getCurrentFragment().onPause();
FragmentTransaction ft = baseFragmentActivity.getSupportFragmentManager().beginTransaction();
if (fragments.get(i).isAdded()) {
f.onResume();
} else {
ft.add(fragmentContentId, f);
}
ft.commit();
showTab(i);
}
}
}
private void showTab(int index) {
for (int i = 0; i < fragments.size(); i++) {
FragmentTransaction ft = baseFragmentActivity.getSupportFragmentManager().beginTransaction();
Fragment f = fragments.get(i);
if (i == index) {
ft.show(f);
} else {
ft.hide(f);
}
ft.commit();
}
currentIndex = index;
}
private Fragment getCurrentFragment() {
return fragments.get(currentIndex);
}
}
在类中使用
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new SetFragment_());
new FragmentTabAdapter(context, fragments, rgNavigation, R.id.flContent);