简单的Fragment切换,Fragment嵌套Viewpager

简单的Fragment切换,Fragment嵌套Viewpager

主方法

public class MainActivity extends AppCompatActivity {
    private FrameLayout frame;
    private RadioGroup radioGroup;
    private List<Fragment> list = new ArrayList<>();
    private FragmentManager manager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initfragment();//添加Fragment到集合里
        //获取控件
        frame = (FrameLayout) findViewById(R.id.frame);
        radioGroup = (RadioGroup) findViewById(R.id.rg);
        //默认显示一个页面
        manager = getSupportFragmentManager();
        manager.beginTransaction().add(R.id.frame, list.get(0)).commit();
        //切换页面的点击事件
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
                switch (i) {
                    case R.id.rbt1://点击按钮,切换页面,替换当前的帧布局中的页面
                        manager.beginTransaction().replace(R.id.frame, list.get(0)).commit();
                        break;
                    case R.id.rbt2:
                        manager.beginTransaction().replace(R.id.frame, list.get(1)).commit();
                        break;
                }
            }
        });
    }

添加fragment的方法

    private void initfragment() {
    //添加fragment
        Fragment1 f1 = new Fragment1();
        Fragment2 f2 = new Fragment2();
        list.add(f1);
        list.add(f2);
    }

在Fragment中嵌套一个viewpager,viewpager加载子布局

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//加载一个fragment
        View view = inflater.inflate(R.layout.fragment1, container, false);
        viewPager = view.findViewById(R.id.vp);//获取控件
        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initfragment();//加载Fragment中的子布局用于滑动页面
        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));//设置适配器
    }

    private void initfragment() {
        list = new ArrayList<>();
        ChildFragment1 childFragment1 = new ChildFragment1();
        ChildFragment2 childFragment2 = new ChildFragment2();
        list.add(childFragment1);
        list.add(childFragment2);

    }
    //Fragment的适配器
    class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return list.get(position);//根据索引值返回相对应的Fragment
        }

        @Override
        public int getCount() {
            return list.size();//返回集合的长度
        }
    }
引用一个使用hide和show效果的代码片
 //将所有Fragment添加到占位布局
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        blankFragment01 = new BlankFragment01();
        fragmentTransaction
                .add(R.id.fl_zhanwei, blankFragment01)
                .commit();

        //RadioGroupd点击监听
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
                hideFragments();//隐藏所有Fragment;
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                switch (i) {
                    case R.id.but1:
                        fragmentTransaction.show(blankFragment01).commit();
                        break;
                    case R.id.but2:
                        if (blankFragment02 == null) {
                            blankFragment02 = new BlankFragment02();
                            fragmentTransaction.add(R.id.fl_zhanwei, blankFragment02).commit();
                        } else {
                            fragmentTransaction.show(blankFragment02).commit();
                        }

                        break;
                    case R.id.but3:
                        if (blankFragment03 == null) {
                            blankFragment03 = new BlankFragment03();
                            fragmentTransaction.add(R.id.fl_zhanwei, blankFragment03).commit();
                        } else {
                            fragmentTransaction.show(blankFragment03).commit();
                        }
                        break;
                    case R.id.but4:
                        if (blankFragment04 == null) {
                            blankFragment04 = new BlankFragment04();
                            fragmentTransaction.add(R.id.fl_zhanwei, blankFragment04).commit();
                        } else {
                            fragmentTransaction.show(blankFragment04).commit();
                        }
                        break;

                }
            }
        });
  //隐藏所有Fragment的方法
 public void hideFragments() {
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        if (blankFragment01 != null && blankFragment01.isAdded()) {
            fragmentTransaction.hide(blankFragment01);
        }
        if (blankFragment02 != null && blankFragment02.isAdded()) {
            fragmentTransaction.hide(blankFragment02);
        }
        if (blankFragment03 != null && blankFragment03.isAdded()) {
            fragmentTransaction.hide(blankFragment03);
        }
        if (blankFragment04 != null && blankFragment04.isAdded()) {
            fragmentTransaction.hide(blankFragment04);
        }
        fragmentTransaction.commit();

    }        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值