Android Jetpack Navigation(一)搭载 BottomNavigationView

Navigation

去年的Google I/O大会上,Google推出了Android Jetpack架构组件,Navigation就是其中之一。
本文主要介绍Navigation与BottomNavigationView的简单搭配使用,最后的效果就是这样:


Android Jetpack Navigation(一)搭载 BottomNavigationView_第1张图片

注意:Android Studio版本需要在3.2及以上

一、创建Activity

上图是在一个Activity中显示了3个Fragment,第一步是创建这几个Fragment的容器。

activity_main.xml:




    

    

fragment

  • android:name="androidx.navigation.fragment.NavHostFragment"app:defaultNavHost="true"指定了,在按back键时会返回到NavHostFragment
  • app:navGraph="@navigation/nav_graph"为这个fragment组件指定了navGraph文件

BottomNavigationView

  • app:menu="@menu/navigation"指定了底部导航栏的菜单配置选项
  • 这里库使用的是material而不是design,是因为采用了AndroidX


    Android Jetpack Navigation(一)搭载 BottomNavigationView_第2张图片
    迁移至AndroidX

二、配置menu文件

  1. res目录下新建menu文件夹
  2. menu目录中,新建Menu resource file
  3. text标签中修改代码:

    
    
    

三、配置navigation graph

  1. res目录下新建navigation文件夹
  2. navigation目录下,新建Navigation resource file
  3. 添加所需要导航的Fragment,注意不需要添加Action,不需要连接箭头
  4. 将每个Fragment对应的ID,修改为menu文件中item对应的ID(最重要的一步)

Android Jetpack Navigation(一)搭载 BottomNavigationView_第3张图片

最终的 nav_graph.xml




    
    

    

    
    


四、Navigation与BottomNavigationView适配

MainActivity.java中:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        BottomNavigationView bottomNav = findViewById(R.id.bottom_nav_view);
        NavigationUI.setupWithNavController(bottomNav, navController);
    }

    @Override
    public boolean onSupportNavigateUp() {
        return Navigation.findNavController(this, R.id.nav_host_fragment);.navigateUp();
    }

注意:NavigationUI.setupWithNavController()方法,只有在onCreate()中调用才有效

你可能感兴趣的:(Android Jetpack Navigation(一)搭载 BottomNavigationView)