首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

BottomNavigationView,如何在一个项目上调用一个函数,而对其他项目使用AppBarConfiguration?

BottomNavigationView是Android Jetpack库中的一个组件,用于在应用程序中创建底部导航栏。它通常与ViewPager或FragmentContainerView一起使用,以实现在不同的导航目标之间进行切换。

要在一个项目上调用一个函数,而对其他项目使用AppBarConfiguration,可以按照以下步骤进行操作:

  1. 在项目中引入BottomNavigationView和AppBarConfiguration的相关依赖库。例如,在build.gradle文件中添加以下依赖:
代码语言:txt
复制
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.0'
  1. 在布局文件中添加BottomNavigationView组件。例如,在XML布局文件中添加以下代码:
代码语言:txt
复制
<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottomNavigationView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:menu="@menu/bottom_navigation_menu" />
  1. 在Activity或Fragment中获取BottomNavigationView的实例,并设置导航选项监听器。例如,在Activity中的onCreate方法中添加以下代码:
代码语言:txt
复制
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
    // 处理导航选项的点击事件
    switch (item.getItemId()) {
        case R.id.navigation_item1:
            // 调用函数1
            functionName1();
            return true;
        case R.id.navigation_item2:
            // 调用函数2
            functionName2();
            return true;
        case R.id.navigation_item3:
            // 调用函数3
            functionName3();
            return true;
    }
    return false;
});
  1. 对于其他项目使用AppBarConfiguration,可以使用Navigation组件来管理导航图和目标。首先,在res目录下创建一个XML文件夹,并在其中创建一个navigation目录。然后,创建一个XML文件,定义导航图和目标之间的关系。例如,创建一个名为nav_graph.xml的文件,并添加以下代码:
代码语言:txt
复制
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_graph"
    app:startDestination="@id/fragment1">

    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.Fragment1"
        android:label="Fragment 1"
        tools:layout="@layout/fragment1" />

    <fragment
        android:id="@+id/fragment2"
        android:name="com.example.Fragment2"
        android:label="Fragment 2"
        tools:layout="@layout/fragment2" />

    <fragment
        android:id="@+id/fragment3"
        android:name="com.example.Fragment3"
        android:label="Fragment 3"
        tools:layout="@layout/fragment3" />

</navigation>
  1. 在Activity或Fragment中使用AppBarConfiguration来管理导航图和目标之间的关系。例如,在Activity中的onCreate方法中添加以下代码:
代码语言:txt
复制
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

这样,当用户在BottomNavigationView中选择不同的导航选项时,会调用相应的函数。而对于其他项目,可以使用AppBarConfiguration来管理导航图和目标之间的关系。

注意:以上代码示例中的函数名和导航目标的ID需要根据实际情况进行修改。

关于BottomNavigationView和AppBarConfiguration的更多详细信息和使用方法,可以参考腾讯云的相关文档和示例代码:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【错误记录】Android 编译报错 ( Attempt to invoke virtual method ‘void xx.ActionBar.setTitle()‘ on a null obj )

一、报错信息 在 Android Studio 中 , 使用右键菜单 , 创建 " Bottom Navigation Activity " , 创建完成后 , 启动该 Activity , 报如下错误...attr/actionBarSize"> <com.google.android.material.bottomnavigation.BottomNavigationView...此处没有获取到 ActionBar 对象 , ActionBar 是页面顶部的 标题栏 ; 在 Android Studio 中生成的代码 , 一般都是标准代码 , 不会出错 , 这里出现问题大概率是自己在项目中的其它设置导致的...的 setTitle() 方法直接报空指针异常 ; 三、解决方案 1、配置有标题的主题 - Theme.AppCompat.Light.DarkActionBar 为报错的 Activity 单独配置一个...NavigationUI.setupActionBarWithNavController 函数 , 关联了 Navigation 与 ActionBar , 这里可以调用其他的关联方法 , 调用 NavigationUI.setupWithNavController

45510

Jetpack组件之Navigation

创建destination 点击Navigation Graph文件的Design面板的click to add a destination,可以选择现有的Fragment,也可以点击 Create...提供了一个名为OnDestinationChangedListener的接口,对页面切换事件进行监听,该接口在页面发生切换或参数改变时调用。....setArguments(bundle) .createPendingIntent(); 需要注意的是,如果提供的上下文不是Activity,构造函数使用...如果该标记未设置,您仍会位于触发隐式深层链接时所在的上一个应用的任务堆栈中。在这种情况下,如果按下返回按钮,您会返回到上一个应用;如果按下向上按钮,就会在导航图中的父级目的地上启动应用的任务。...形式为 {params} 的路径参数占位符与一个或多个字符相匹配。 可以使用查询参数占位符代替路径参数,也可以将查询参数占位符与路径参数结合使用

3K20

1. Jetpack源码解析---看完你就知道Navigation是什么了?

背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github也可以找到,本篇文章旨在自己的APP使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...AppBarConfigurationAppBarConfiguration 里传入了一个id的set集合和drawerlayout,id的集合就是我们在**navigation_main.xml *...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu...不管是NavigationView还是Bottom``NavigationView,都会调用这个方法,他是AppCompatActivity的一个扩展方法,调用的是NavigationUI这个类: public

2.5K30

1. Jetpack源码解析---看完你就知道Navigation是什么了?

背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github也可以找到,本篇文章旨在自己的APP使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...AppBarConfigurationAppBarConfiguration 里传入了一个id的set集合和drawerlayout,id的集合就是我们在**navigation_main.xml *...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu菜单文件...不管是NavigationView还是Bottom``NavigationView,都会调用这个方法,他是AppCompatActivity的一个扩展方法,调用的是NavigationUI这个类: public

2.2K20

1. Android_Jetpack组件---Naviagtion源码解析

背景 之前已经翻译过了Google官方的CodeLabs上面的教程,教程很详细,代码在Github也可以找到,本篇文章旨在自己的APP使用效果及演示Demo,来具体的使用Navigation。...基本使用 虽然在之前的文章中已经很详细的介绍了Navigation,但是这里也简单的叙述一下我在项目中的具体使用: 2.1 Navigation+DrawerLayout+ToolBar 我们可以通过使用...AppBarConfigurationAppBarConfiguration 里传入了一个id的set集合和drawerlayout,id的集合就是我们在**navigation_main.xml *...2.2 BottomNavigationView使用 2.2.1 配置文件 和上面的步骤类似:也是配置好 navigation.xml布局以及 BottomNavigationView所对应的menu...不管是NavigationView还是Bottom``NavigationView,都会调用这个方法,他是AppCompatActivity的一个扩展方法,调用的是NavigationUI这个类: public

2.1K10

Android开发之漫漫长途 XIII——Fragment最佳实践

---- 前言 一篇文章中详细分析了Fragment相关知识,那么作为“小Activity”,Fragment能做什么呢,如何使用Fragment得到最佳实践呢。...--关于底层布局我这里使用了Github的开源项目--> <com.luseen.luseenbottomnavigation.BottomNavigation.BottomNavigationView...Github的开源项目LuseenBottomNavigation,该项目地址是https://github.com/armcha/LuseenBottomNavigation读者可自行查看 接着创建...Fragment 目前Fragment作为演示使用,可以看到布局内容都非常简单,我这里只给出其中一个Fragment的创建过程和源码,项目完整源码可见文末的源码地址。...App中都能看到这种顶部、底部导航的效果,并且在此基础我们探讨了使用Fragment不当的存在性能问题及优化。

1.3K20

❤️【Android精进之路-03】创建第一个Android应用程序竟然如此简单❤️

前言 一篇文章我们介绍了Android Studio的安装以及Android SDK的目录结构。...这篇文章将介绍如何使用Android Studio创建第一个Android应用,重点介绍Android Studio的目录结构。...进入下一个界面之后选中Basic Activity 按钮,创建一个基本视图的Android应用。 接着进入下一个界面,在这个界面中可以填写项目名,包名等等。...这里我新建了一个名为HelloWorld项目。 设置完成之后点击Finish 按钮。即可完成第一个Android项目的创建。...Gradle Scripts -> build.gradle 这里是gradle构建项目的文件,一个针对项目Project:HelloWorld,一个针对应用模块Project:HelloWorld.app

64000

【错误记录】Kotlin 中 Lambda 表达式返回值报错 ( ‘return‘ is not allowed here | 匿名内部类 | 尾随 Lambda 规范 - Lambda 替换接口 )

(@NonNull MenuItem var1); 函数 , 需要返回一个布尔值 ; 直接使用 return 返回布尔值 , 就报如下错误 ; 二、问题分析 1、匿名内部类 BottomNavigationView...调用 setOnNavigationItemSelectedListener 函数 , 设置的监听器是 BottomNavigationView.OnNavigationItemSelectedListener..., 然后 调用 setOnNavigationItemSelectedListener 函数将其设置给 BottomNavigationView 作为 选择监听器 ; // 创建匿名内部类..., 最后一个函数是匿名内部类 , 匿名内部类中只实现了一个函数 , 此时使用 Lambda 表达式替代该 匿名内部类 ; Lambda 表达式 其本质 就是 函数类型 的 匿名对象 , 也是一个实例对象...接收一个 接口类型 的匿名内部类 或 对象表达式 ; 该 接口类型 中 只定义了一个函数 ; 可以 省略掉 匿名内部类 也就是 对象表达式的定义 , 直接使用 接口中的函数 类型对象 , 也就是 Lambda

7610

Base封装(一)--我的最简MVP架构

https://blog.csdn.net/lyhhj/article/details/73471270 绪论 最近懒癌症犯了,好久都没写博客了,当然也在做一些东西,也在整理自己一直以来使用的一些技术点...Model-View-Presenter image.png MVP和MVC的区别仅仅在于P和Control,MVC中View和Model是互通的可以互相通信,在Android中View一般代表着我们的xml进行界面的描述,而对于模型...和一个Presenter就可以满足了,特殊的需求再通过特殊方法来处理,下面我们举一个简单的例子: 网络请求我用的 jeasonlzy 大神的OKGo3,刚出锅没几天,尝试一下,个人认为封装的非常非常好,...https://github.com/jeasonlzy/okhttp-OkGo 好了下面看我们的例子吧: 项目结构 看一下项目结构 HomeView 我用的Gank.io里面的一个接口获取数据,首先我们定义我们的...下一篇文章我会继续介绍我的封装之路,近期会将我的HLibrary提到我的Github,大家可以star一下我的Github。

57910

android实现滑屏幕隐藏底部菜单栏的示例

本篇文章引用github上一个仿今日头条项目项目地址: https://github.com/iMeiji/Toutiao ,主要实现的功能是底部菜单栏随用户手势滑动而变化可见状态 ? ?...bottom导航栏这里采用是BottomNavigationView,具体用法不在介绍。...这里主要看一下BottomNavigationView的 app:layout_behavior 属性,该属性是协调布局特有的。...网上的一版用法是app:layout_behavior=”@string/appbar_scrolling_view_behavior” 虽然表面上看是一个字符串,其实在里面调用的也是一个view类。...如果是的话,就返回true onNestedPreScroll:这个方法就比较简单了,当用户滑的时候,隐藏底部菜单栏,这里使用了动画退出,使用了 ObjectAnimator.ofFloat 方法,第一个

2.2K31

Base封装之我的最简MVP架构

绪论 最近懒癌症犯了,好久都没写博客了,当然也在做一些东西,也在整理自己一直以来使用的一些技术点,从Retrofit到OkGO,从ListView到RecycleView,从Java到Kotlin….总之一直在尝试新的技术...MVP和MVC的区别仅仅在于P和Control,MVC中View和Model是互通的可以互相通信,在Android中View一般代表着我们的xml进行界面的描述,而对于模型Model部分则大多对应于本地的数据文件或网络获取的数据体...和一个Presenter就可以满足了,特殊的需求再通过特殊方法来处理,下面我们举一个简单的例子: 网络请求我用的 jeasonlzy 大神的OKGo3,刚出锅没几天,尝试一下,个人认为封装的非常非常好,...https://github.com/jeasonlzy/okhttp-OkGo 好了下面看我们的例子吧: 项目结构 看一下项目结构 ?...下一篇文章我会继续介绍我的封装之路,近期会将我的HLibrary提到我的Github,大家可以star一下我的Github。

1.4K90

Jetpack:新一代导航管理Navigation

前言 不知道小伙伴们是否注意到,用AS创建一个默认的新项目后,MainActivity已经有了很大的不同,最大的区别就是新增加了两个Fragment,同时我们注意到这两个Fragment之间跳转的时候并没有使用之前...注意首先通过findNavController()来获取一个NavController对象,然后调用它的navigate函数即可,当然这个函数有多种重载,比如可以传递参数,如下: public void...可以看到使用Navigation代码精简了很多,只需要一行代码执行一个函数即可。...= NavHostFragment.findNavController(this) 实际是NavHostFragment的一个静态函数findNavController: @NonNull...注意这里的findNavController是Activity的扩展函数,它最终一样会调用Navigation的对应函数,所以与Fragment的流程是一样的。

86620

Android Notes|BottomNavigationView 爱上 Lottie

以前大部分项目底部导航栏关于图片部分的实现,要么两套图 selector 切换,要么通过着色器 tint 进行渲染,总之最后呈现的效果便是在点击时两张图静态切换,说 Low 吧,也还凑合,但是总是没那么高大...项目重构时,韩总说了,之前的方式呈现的效果太 Low 了,这次重构要求底部要动。(内心默默来句,你咋不上天。) 先来看个两者间对比效果吧~ 效果对比 原有两张静态图切换: ? 小动画浪起来: ?...前期介绍 针对目前使用BottomNavigationView 以及 Lottie 简单记录下,以便日后遗忘直接查看。 1....> 相对比较简单的方式,便是提供一套默认的 Icon,然后根据选中进行 tint 着色,当然,也可以通过 selector 选择器去设置对应选中以及未选中的 Icon,根据个人喜欢以及项目自行选择...那么我直接缓存一此点击 MenuItem 然后修改状态不就好了嘛。 tint 着色器修改? 整整折腾了好久,折腾到韩总说,不行咱就放弃吧。 想想鸡老大,怎能轻易放弃?

3.7K21

Navigation的用法

Navigation Graph:导航图,包括应用程序所有的页面以及页面间的关系   NavHostFragment:这是一个特殊的Fragment,你可以认为它是其他Fragment的容器,Navigation...:2.5.2"   implementation "androidx.navigation:navigation-ui:2.5.2"   1.创建Navigation Graph     新建一个项目,...2.添加NavHostFragment       NavHostFragment是一个特殊的Fragment,我们需要将它添加到Activity的布局文件中,作为其他Fragment的容器,代码如下所示...5.使用NavController完成导航       经过以上的步骤后,我们还需要通过NavController对象,在代码中完成具体的页面跳转工作,我们需要在MainFragment的布局文件中添加一个...如果没有的话,可以重新编译一下项目

26820

安卓Navigation系列——进阶篇

前言 上篇对Navigation的一些概念进行了介绍,并在前言中提到了app中常用的一个场景,就是app的首页,一般都会由一个activity+多个子tab组成,这种场景有很多种实现方式,比如可以使用RadioGroup...使用Navigation+BottomNavigationView结合navigationUI扩展库,这种方式是不是相比于以往的实现方式更简单?...可能大家迫不及待的想应用到自己的项目中去了,可殊不知还有坑在里面。...总结 本篇在上篇的基础,结合BottomNavigationView实现了第一个底部导航切换的实例,然后介绍了这种方式引发的坑,进而通过源码分析了发生这种现象的原因,并给出了解决的思路。...有个mNavController成员变量,它是一个NavController对象,最终页面导航都是通过调用它的navigate方法实现的 mNavController内部通过NavigatorProvider

3K30
领券