(原创)安卓快速使用简单的BottomNavigation(结合fragment)

发布时间 2023-12-14 23:08:01作者: lmj625

原创声明:本文所有图片和代码皆由本人制作和编写。

前言

这篇文章是边写大作业边查资料边写的,查了很多资料,翻了很多论坛,也遇到了很多bug。我怕写完了就忘记怎么写的,答辩的时候被问懵,所以还是记录一下我的编写过程。

本文仅涉及最简BottomNavigation使用方法,适合用于刚接触安卓的新手。



目标效果

image



第0步 导入库

// navigation
    implementation "androidx.navigation:navigation-fragment:2.3.0-alpha02"
    implementation "androidx.navigation:navigation-ui:2.3.0-alpha02"

image



第1步 准备好一些资源

fragment

我的大作业用了3个页面切换,所以创建3个Fragment:

图片名称

drawable图标

第一小步

image

第二小步

image



第二步 创建menu

选这个:
image
image
image
image



第三步 创建navigation

和menu的创建一样,然后:
image

注意

然后需要在main_xml自动生成的代码添加2句语句,不然app会闪退。
image

app:navGraph="@navigation/navigation"
        app:defaultNavHost="true"


第四步 绑定

在MainActivity里配置 使用 Navigation 组件时的一些基本设置,包括与底部导航栏、ActionBar 以及 NavController 的关联。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 设置 Activity 使用的布局文件为 activity_main.xml
    setContentView(R.layout.activity_main);

    // 找到底部导航栏 BottomNavigationView
    BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);

    // 找到 NavHostFragment,用于承载 Navigation 组件的各个 Fragment
    NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.fragment);

    // 获取与 NavHostFragment 关联的 NavController,用于导航控制
    NavController navController = navHostFragment.getNavController();

    // 创建 AppBarConfiguration 对象,指定哪些目的地应该显示“向上”按钮
    AppBarConfiguration configuration = new AppBarConfiguration.Builder(bottomNavigationView.getMenu()).build();

    // 设置 ActionBar 与 NavController 关联,以便在目标发生变化时更新 ActionBar
    NavigationUI.setupActionBarWithNavController(this, navController, configuration);

    // 将 BottomNavigationView 与 NavController 关联,以便在底部导航项被点击时导航到相应的目的地
    NavigationUI.setupWithNavController(bottomNavigationView, navController);
}