Activity
public class MainActivity extends FragmentActivity {
private RadioGroup mRg_main;
private List<BaseFragment> mBaseFragment;
/**
* 选中的Fragment的对应的位置
*/
private int position;
/**
* 上次切换的Fragment
*/
private Fragment mContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化View
initView();
//初始化Fragment
initFragment();
//设置RadioGroup的监听
setListener();
}
private void setListener() {
mRg_main.setOnCheckedChangeListener(new MyOnCheckedChangeListener());
//设置默认选中常用框架
mRg_main.check(R.id.rb_common_frame);
}
class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_common_frame://常用框架
position = 0;
break;
case R.id.rb_thirdparty://第三方
position = 1;
break;
case R.id.rb_custom://自定义
position = 2;
break;
case R.id.rb_other://其他
position = 3;
break;
default:
position = 0;
break;
}
//根据位置得到对应的Fragment
BaseFragment to = getFragment();
//替换
switchFrament(mContent,to);
}
}
/**
*
* @param from 刚显示的Fragment,马上就要被隐藏了
* @param to 马上要切换到的Fragment,一会要显示
*/
private void switchFrament(Fragment from,Fragment to) {
if(from != to){
mContent = to;
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
//才切换
//判断有没有被添加
if(!to.isAdded()){
//to没有被添加
//from隐藏
if(from != null){
ft.hide(from);
}
//添加to
if(to != null){
ft.add(R.id.fl_content,to).commit();
}
}else{
//to已经被添加
// from隐藏
if(from != null){
ft.hide(from);
}
//显示to
if(to != null){
ft.show(to).commit();
}
}
}
}
/**
* 根据位置得到对应的Fragment
* @return
*/
private BaseFragment getFragment() {
BaseFragment fragment = mBaseFragment.get(position);
return fragment;
}
private void initFragment() {
mBaseFragment = new ArrayList<>();
mBaseFragment.add(new CommonFrameFragment());//常用框架Fragment
mBaseFragment.add(new ThirdPartyFragment());//第三方Fragment
mBaseFragment.add(new CustomFragment());//自定义控件Fragment
mBaseFragment.add(new OtherFragment());//其他Fragment
}
private void initView() {
setContentView(R.layout.activity_main);
mRg_main = (RadioGroup) findViewById(R.id.rg_main);
}
}
BaseFragment
public abstract class BaseFragment extends Fragment {
/**
* 上下文
*/
protected Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getActivity();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return initView();
}
/**
* 强制子类重写,实现子类特有的ui
* @return
*/
protected abstract View initView();
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData();
}
/**
* 当孩子需要初始化数据,或者联网请求绑定数据,展示数据的 等等可以重写该方法
*/
protected void initData() {
}
}
CustomFragment
public class CustomFragment extends BaseFragment {
@Override
protected View initView() {
View view = View.inflate(mContext,R.layout.fragment, null);
return view;
}
@Override
protected void initData() {
super.initData();
}
}