本文共 2930 字,大约阅读时间需要 9 分钟。
四个radiobutton+4个fragent+动态hide和show指定的Fragment
(1)创建4个Fragment,此处省略:
(2)activity_main.xml:(3)MainActivity.java:
public class MainActivity extends AppCompatActivity { //视图 private MyViewPager vp; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; //数据 private ArrayListfragmentArrayList=new ArrayList<>(); //记录当前正在显示的Fragment private Fragment currentFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //TODO 去除Bar supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//这句话一定要放到中间 setContentView(R.layout.activity_main); initview();//找组件 initdata();//初始化数据 initlistener();//事件监听 } private void initlistener() { rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(rb1.getId()==checkedId){ replaceFragemnt(fragmentArrayList.get(0)); }else if(rb2.getId()==checkedId){ replaceFragemnt(fragmentArrayList.get(1)); }else if(rb3.getId()==checkedId){ replaceFragemnt(fragmentArrayList.get(2)); }else if(rb4.getId()==checkedId){ replaceFragemnt(fragmentArrayList.get(3)); } } }); } private void initdata() { fragmentArrayList.add(new Fragment1()); fragmentArrayList.add(new Fragment2()); fragmentArrayList.add(new Fragment3()); fragmentArrayList.add(new Fragment4()); } private void initview() { vp=findViewById(R.id.vp); rg=findViewById(R.id.rg); rb1=findViewById(R.id.rb1); rb2=findViewById(R.id.rb2); rb3=findViewById(R.id.rb3); rb4=findViewById(R.id.rb4); } //TODO 替换Fragment的优化 public void replaceFragemnt(Fragment fragment){ //TODO 1:获得管理者 FragmentManager supportFragmentManager = getSupportFragmentManager(); //TODO 2:开启事务 FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); //TODO 3:替换功能 //隐藏当前正在显示的fragment if(currentFragment!=null){ fragmentTransaction.hide(currentFragment); } //判断要添加的fragment时候被添加过 if(fragment.isAdded()){ //被添加过 //显示传过来 fragmentTransaction.show(fragment); }else{ //没有添加过 //添加传过来的 fragmentTransaction.add(R.id.frame_layout,fragment); } //TODO 4:提交 fragmentTransaction.commit(); //更新当前正在显示的Fragment currentFragment=fragment; }}
转载地址:http://iwktn.baihongyu.com/