实现BottomNavigationView和Navigation联动

2023-05-16

实现BottomNavigationView和Navigation联动

  • 界面展示
  • 引入依赖
  • 创建Fragment
  • 创建navigation
  • 为BottomNavigationView创建menu
  • 主界面布局
  • 实现BottomNavigationView和Navigation联动

界面展示

在这里插入图片描述

引入依赖

// Navigation
implementation "androidx.navigation:navigation-fragment:2.2.2"
implementation "androidx.navigation:navigation-ui:2.2.2"

创建Fragment

在这里插入图片描述
在这里插入图片描述

创建navigation

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<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/navigation"
    app:startDestination="@id/oneFragment2">
    <fragment
        android:id="@+id/oneFragment2"
        android:name="com.example.navigation.OneFragment"
        android:label="fragment_one"
        tools:layout="@layout/fragment_one" />
    <fragment
        android:id="@+id/twoFragment2"
        android:name="com.example.navigation.TwoFragment"
        android:label="fragment_two"
        tools:layout="@layout/fragment_two" />
    <fragment
        android:id="@+id/threeFragment2"
        android:name="com.example.navigation.ThreeFragment"
        android:label="fragment_three"
        tools:layout="@layout/fragment_three" />
</navigation>

注意这里的三个ID
在这里插入图片描述

为BottomNavigationView创建menu

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/oneFragment2"
        android:icon="@drawable/ic_launcher_background"
        android:title="Item" />
    <item
        android:id="@+id/twoFragment2"
        android:icon="@drawable/ic_launcher_background"
        android:title="Item" />
    <item
        android:id="@+id/threeFragment2"
        android:icon="@drawable/ic_launcher_background"
        android:title="Item" />
</menu>

这里的三个ID必须和刚才一样
在这里插入图片描述

主界面布局

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/main_bottom_navigation_view"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        app:menu="@menu/menu" />

</LinearLayout>

实现BottomNavigationView和Navigation联动

在这里插入图片描述

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI;

import android.os.Bundle;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.tabs.TabLayout;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
                .findFragmentById(R.id.fragmentContainerView);
        NavController navController = navHostFragment.getNavController();
        BottomNavigationView bottomNavigationView = findViewById(R.id.main_bottom_navigation_view);
        NavigationUI.setupWithNavController(bottomNavigationView, navController);
    }
}

主要是三面四行代码

NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
                .findFragmentById(R.id.fragmentContainerView);
NavController navController = navHostFragment.getNavController();
BottomNavigationView bottomNavigationView = findViewById(R.id.main_bottom_navigation_view);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现BottomNavigationView和Navigation联动 的相关文章

随机推荐

  • Redis的延时队列

    延时队列 redis的list数据结构用来做一部消息队列 xff0c 使用rpush lpush操作入队列 使用lpop rpop来出队列 span class token operator gt span rpush notify que
  • 设计模式---代理模式

    代理模式 proxy pattern 定义 xff1a 指为其他对象提供一种代理 xff0c 以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 使用目的 保护目标对象增强目标对象 解释 Subject是顶层接口 xff0c
  • 04747 java程序设计笔记 --多线程

    文字篇 线程概念 进程 程序在处理机的一次运行 xff0c xff08 从代码加载 xff0c 执行至完毕的一个完成过程 xff09 线程 进程执行过程中产生的多条执行线索 xff0c 比进程单位更小的执行单位 它没有出口 xff0c 没有
  • Kubernetes(k8s)基础

    pod Pod是什么 Pod是Kubernetes创建或部署的最小单位 是Kubernetes集群中的一个应用实例 xff0c 总是部署在同一个节点Node上 Pod中包含了一个或多个容器 xff0c 还包括了存储 网络等各个容器共享的资源
  • 04747java程序设计 之 输入输出流

    输入输出流 数据流 概念 数据流指一组有顺序的 xff0c 有起点和重点的字节集合 输入流 概念 只读 xff0c 用于向计算机内输入信息使用 主要的读取方法 int read 从输入流中读取一个字节的二进制数据 int read byte
  • 04747java程序设计 -- 继承与多态

    继承与多态 子类 is a 关系 整体与部分 has a extends 继承关键词 父类也叫做 超类 基类 object 类 类层次最高点 xff0c 是所有类的直接或间接父类 方法 public final Class getClass
  • 03731计算机网络原理 - 计算机网络概念 脑图整理

  • 03137计算机网络原理 - 计算机网络体系结构

  • 03137计算机网络原 - 物理层

    物理层 基础概念 OSI模型最底层 功能 为在链路实体间传送比特流而对物理连接的 接通 维持 和 拆除 提供机械 电气 功能和规程方面的方法 作用 尽可能屏蔽现有多种多样的硬件设备 传输媒体和通信手段的差异 确保原始数据可以在各种物理媒介上
  • 03137计算机网络原理 - 数据链路层

    数据链路层 功能 定义 基本功能是 向该层用户 提供透明和可靠的数据传送基本服务 帧和介质访问控制 数据链路层 是 对物理层传输原始比特流功能的加强 将物理层提供的可能出错的粗粒连接改造成逻辑上无差错的数据链路 使之对网络层表现为无差错的线
  • 彻底卸载Android Studio

    在安装Android Studio会有很多问题导致无法正常运行 xff0c 多次下载AS多次错误后了解到 xff0c 删除以下四个文件才能彻底卸载Android Studio 第一个文件 xff1a gradle 路径 xff1a C Us
  • Linux远程登录

    L i n u x 远程登录
  • 03_SpringBoot项目配置

    文章目录 SpringBoot项目配置0x01 properties格式配置文件0x02 yml格式配置文件配置对象类型数据配置集合类型配置数组类型 0x03 properties和yml的区别优先级区别 0x04 配置文件在项目中的位置0
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c
  • kubectl命令应用

    kubectl命令语法 kubectl span class token punctuation span command span class token punctuation span span class token punctua
  • java生成10个随机数(1-100)到数组中,并倒序打印以及求平均值,最大值和最大值下标,并查找其中是否有8.

    代码如下 Scanner in 61 new Scanner System in Random r 61 new Random int arr 61 new int 10 int sum 61 0 int max 61 0 int a 61
  • [ 常用工具篇 ] Esxi 安装详解

    博主介绍 nbsp 博主介绍 大家好 我是 nbsp PowerShell nbsp 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步
  • day13_spring环境配置及bean使用

    1 spring简介 xff1a 整合现有的技术框架 是一个轻量级的控制反转 xff08 IOC xff09 和面向切面编程的框架 xff08 AOP xff09 xff0c 支持事务的处理和对框架整合的支持 DI 控制反转 就是IOC x
  • 二叉树--求树的高度

    实现思想 1 求树高时我们可以利用递归思想来求 而递归主要的思想就是要将大问题化为小问题 2 我们求树高时 xff0c 可以分别求左右子树的高度然后比较左右子树的高度 xff0c 返回较大的值 代码实现 xff1a span class t
  • 实现BottomNavigationView和Navigation联动

    实现BottomNavigationView和Navigation联动 界面展示引入依赖创建Fragment创建navigation为BottomNavigationView创建menu主界面布局实现BottomNavigationView