public class MainActivity extends AppCompatActivity {
private RadioGroup frameGroup;
private FragmentTransaction mFragmentTransaction; //fragment事务
private FragmentManager mFragmentManager; //fragment管理者
private HomeFragment homeFragment;
private ClassFragment classFragment;
private FindFragment findFragment;
private MarketFragment marketFragment;
private MineFragment mineFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setClick(0); //默认显示homeFragment
}
private void initView() {
frameGroup = findViewById(R.id.frame_group);
mFragmentManager = getSupportFragmentManager();//判断获取到的fragment对象
frameGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.home_radio:
setClick(0);
break;
case R.id.catogry_radio:
setClick(1);
break;
case R.id.find_radio:
setClick(2);
break;
case R.id.shop_radio:
setClick(3);
break;
case R.id.user_radio:
setClick(4);
break;
}
}
});
}
private void setClick(int type) {
//开启事务
mFragmentTransaction = mFragmentManager.beginTransaction();
//显示之前闲把所有fragment都隐藏起来,再显示我们想要的fragment
hideFragment(mFragmentTransaction);
switch (type) {
case 0:
//如果fragment是null,就创建一个
if (homeFragment == null) {
homeFragment = new HomeFragment();
//加入事务
mFragmentTransaction.add(R.id.frame_group_linear, homeFragment);
} else {
//不为空就显示
mFragmentTransaction.show(homeFragment);
}
break;
case 1:
if (classFragment == null) {
classFragment = new ClassFragment();
mFragmentTransaction.add(R.id.frame_group_linear, classFragment);
} else {
mFragmentTransaction.show(classFragment);
}
break;
case 2:
if (findFragment == null) {
findFragment = new FindFragment();
mFragmentTransaction.add(R.id.frame_group_linear, findFragment);
} else {
mFragmentTransaction.show(findFragment);
}
break;
case 3:
if (marketFragment == null) {
marketFragment = new MarketFragment();
mFragmentTransaction.add(R.id.frame_group_linear, marketFragment);
} else {
mFragmentTransaction.show(marketFragment);
}
break;
case 4:
if (mineFragment == null) {
mineFragment = new MineFragment();
mFragmentTransaction.add(R.id.frame_group_linear, mineFragment);
} else {
mFragmentTransaction.show(mineFragment);
}
break;
}
//提交事务
mFragmentTransaction.commit();
}
/*
用来隐藏fragment的方法
*/
private void hideFragment(FragmentTransaction fragmentTransaction) {
if (homeFragment != null) {
fragmentTransaction.hide(homeFragment);
}
if (classFragment != null) {
fragmentTransaction.hide(classFragment);
}
if (findFragment != null) {
fragmentTransaction.hide(findFragment);
}
if (marketFragment != null) {
fragmentTransaction.hide(marketFragment);
}
if (mineFragment != null) {
fragmentTransaction.hide(mineFragment);
}
}
}
RadioGroup实现Fragment切换
于 2021-05-11 10:23:15 首次发布