使用BottomNavigation切换Fragment
程序员文章站
2022-06-20 18:27:57
...
入门级教程,这里要讲的大概是下图的关系,main_activity.xml里放一个Layout,这里是FrameLayout,然后只要把Fragment的替换这个Layout就行了。
在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;
}
};
推荐阅读
-
Android TextSwitcher文本切换器和ViewFlipper使用详解
-
使用html5+css3来实现slider切换效果告别javascript+css
-
Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
-
Vue中fragment.js使用方法详解
-
premiere图片之间怎么使用圆划像切换效果?
-
电脑连接投影仪切换画面是使用哪个快捷键?
-
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
-
fragment实现隐藏及界面切换效果
-
Android开发教程之Fragment定义、创建与使用方法详解【包含Activity通讯,事务执行等】
-
在风行播放器使用过程中如何切换影片中的配音