package com.example.administrator.fragmenttest;
import android.os.Bundle;
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 android.widget.RadioGroup;
import com.example.administrator.fragmenttest.base.BaseFragment;
import com.example.administrator.fragmenttest.fragment.OtherFragment;
import com.example.administrator.fragmenttest.fragment.Sgigement;
import com.example.administrator.fragmenttest.fragment.WenxueFragment;
import com.example.administrator.fragmenttest.fragment.XiaoshuoFragment;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends FragmentActivity {
List<BaseFragment> mBaseFragment;
RadioGroup rg_main;
private int position;
private Fragment mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化view
initView();
//初始化Fragment
initFragment();
//设置监听
setListener();
}
private void setListener() {
rg_main.setOnCheckedChangeListener(new MyOnCheckedChangeListener());
rg_main.check(R.id.rb_sanwen);
}
private void initFragment() {
mBaseFragment = new ArrayList<>();
mBaseFragment.add(new WenxueFragment());
mBaseFragment.add(new Sgigement());
mBaseFragment.add(new XiaoshuoFragment());
mBaseFragment.add(new OtherFragment());
}
private void initView() {
setContentView(R.layout.activity_main);
rg_main = (RadioGroup) findViewById(R.id.rg_main);
}
private class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkId) {
switch (checkId) {
case R.id.rb_sanwen:
position = 0;
break;
case R.id.rb_shige:
position = 1;
break;
case R.id.rb_xiaoshuo:
position = 2;
break;
case R.id.rb_other:
position = 3;
break;
default:
position = 0;
break;
}
//根据位置得到对应的Framgent
BaseFragment to = getFragment();
//替换
switchFragment(mContext,to);
}
private void switchFragment(Fragment from, Fragment to) {
if (from != to) {
//才切换
mContext = to;
FragmentManager fm = getSupportFragmentManager();
//开启事务
FragmentTransaction transaction = fm.beginTransaction();
if (!to.isAdded()) {
if (from != null) {
transaction.hide(from);
}
if (to != null) {
transaction.add(R.id.f1_frame, to).commit();
}
} else if (from != null) {
transaction.hide(to);
}
if (to != null) {
transaction.show(to).commit();
}
}
}
private BaseFragment getFragment() {
BaseFragment fragment = mBaseFragment.get(position);
return fragment;
}
}
}