public class MainActivity extends FragmentActivity { private FragmentManager manager; private Frag1 f1; private Frag2 f2; private Frag3 f3; private RadioGroup rg; private DrawerLayout dl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 rg = (RadioGroup) findViewById(R.id.rg); dl = (DrawerLayout) findViewById(R.id.drawerLayout); //获取管理者 manager = getSupportFragmentManager(); //获取Fragment的实例 f1 = new Frag1(); f2 = new Frag2(); f3 = new Frag3(); /*//调用隐藏Fragemn的方法 init();*/ //开启一个事务 FragmentTransaction transaction = manager.beginTransaction(); //显示当前的Fragment并提交 transaction.add(R.id.fl, f1).show(f1).commit(); //RadioGroup的点击事件 rg.setOnCheckedChangeListener(new MyRadioGroup()); dl.addDrawerListener(new MyDrawerListener()); } //隐藏所有的Fragment方法 public void init() { //隐藏所有Fragment并提交 manager.beginTransaction().hide(f1).hide(f2).hide(f3).commit(); } //RadioGroup的点击事件的实现类 private class MyRadioGroup implements RadioGroup.OnCheckedChangeListener { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i) { case R.id.rb1: //调用隐藏Fragmenty的方法 init(); //开启一个事务并显示提交 manager.beginTransaction().show(f1).commit(); break; case R.id.rb2: //调用隐藏Fragmenty的方法 init(); //判断当前Fragment是否被Add过 if (!f2.isAdded()) { //开启一个事务添加一个Frangment显示并提交 manager.beginTransaction().add(R.id.fl, f2).show(f2).commit(); } else { //开启一个事务并显示提交 manager.beginTransaction().show(f2).commit(); } break; case R.id.rb3: //调用隐藏Fragmenty的方法 init(); //判断当前Fragment是否被Add过 if (!f3.isAdded()) { //开启一个事务添加一个Frangment显示并提交 manager.beginTransaction().add(R.id.fl, f3).show(f3).commit(); } else { //开启一个事务并显示提交 manager.beginTransaction().show(f3).commit(); } break; } } } }
Fragment切换(show() and hide())
最新推荐文章于 2022-08-10 10:55:22 发布