使用BottomNavigation切换Fragment

入门级教程,这里要讲的大概是下图的关系,main_activity.xml里放一个Layout,这里是FrameLayout,然后只要把Fragment的替换这个Layout就行了。

main_activity.xml
FrameLayout
Fragment1
Fragment2
Fragment3

在main_activity.xml文件加多入一个Layout:

<FrameLayout
        android:id="@+id/activity_main_fl_fragment_container"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="@+id/constraintLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

MainActivity.java添加部分代码,如下

getSupportFragmentManager().beginTransaction()
                            .replace(R.id.activity_main_fl_fragment_container, Fragment1.newInstance())
                            .commit();

这里R.id.activity_main_fl_fragment_container是要用于被替换的对象,也就是上面FrameLayout的id,Fragment1.newInstance()是调用Fragment的工厂方法,也就是创建Fragment时自动生成的部分代码,这里因为我不用到参数,所以**newInstance()**里面的两个参数删掉就行了,如下:

    public static LocalFragment newInstance() {
        LocalFragment fragment = new LocalFragment();
        Bundle args = new Bundle();
//        args.putString(ARG_PARAM1, param1);
//        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

此时再给MainActivity.java加上必要的接口,不然会出现闪退

implements Fragment1.OnFragmentInteractionListener,Fragment2.OnFragmentInteractionListener,Fragment3.OnFragmentInteractionListener

按上面的方法加多几个Fragment,运行程序,点击导航,就可以运行切换Fragment了。
下面给出MainActvity.java的部分主要代码

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_local:
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.activity_main_fl_fragment_container, Fragment1.newInstance())
                            .commit();
                    return true;
                case R.id.navigation_net:
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.activity_main_fl_fragment_container,Fragment2.newInstance())
                            .commit();
                    return true;
                case R.id.navigation_me:
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.activity_main_fl_fragment_container, Fragment3.newInstance())
                            .commit();
                    return true;
            }
            return false;
        }
    };
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值