保姆级手把手记录Android studio BottomNavigationView +FrameLayout暴力切换Fragment

news2024/11/25 4:39:55

开发环境:

效果图:

《《《代码在底部》》》

1,新建项目

2,新建若干Fragment,内容一样,改一下显示出来的Text,名字分别为test1Fragment,test2Fragment,test3Fragment,默认TextView的Text属性分别设置为Fragment1内容,Fragment2内容,Fragment3内容,以示区分

3,拖拽一个FrameLayout

4,拖拽一个BottomNavigationView

5,调整代码

6,新建一个菜单资源给BottomNavigationView使用

7,BottomNavigationView和新建的菜单项关联

8,进一步调整代码

9,MainActivity中的代码

10,红色部分导入类即可解决

代码如下:

1,nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/navigation_home"
        android:icon="@android:drawable/ic_dialog_map"
        android:title="Frame1" />
    <item
        android:id="@+id/navigation_tools"
        android:icon="@android:drawable/ic_menu_compass"
        android:title="Frame2" />
    <item
        android:id="@+id/navigation_play"
        android:icon="@android:drawable/ic_menu_gallery"
        android:title="Frame3" />
</menu>

2,activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity"
    tools:ignore="ExtraText">


    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/nav_menu"/>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_menu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:menu="@menu/nav_menu"
        tools:layout_height="50dp" />


</RelativeLayout>

3,fragment_test1.xml  

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".test1Fragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:id="@+id/text1Fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Fragment1内容" />

</FrameLayout>

4,MainActivity.java

package com.example.bottomnavigationviewstudy;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import android.os.Bundle;
import android.view.MenuItem;

import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ArrayList<Fragment> mFragments = new ArrayList<Fragment>();
    test1Fragment t1f = new test1Fragment();
    test2Fragment t2f = new test2Fragment();
    test3Fragment t3f = new test3Fragment();

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

        BottomNavigationView navView = findViewById(R.id.nav_menu);
        mFragments.add(t1f);
        mFragments.add(t2f);
        mFragments.add(t3f);

        //设置默认加载视图
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new test1Fragment()).commit();

        // navView 点击事件
        navView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                String a = (String) item.getTitle();

                //判断是哪个item被点击了
                switch (a) {

                    case "Frame2":
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new test2Fragment()).commit();
                        break;
                    case "Frame3":
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new test3Fragment()).commit();
                        break;
                    default:
                        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new test1Fragment()).commit();
                        break;
                }
                item.setChecked(true);
                return true;
            }
        });
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义数据训练的rknn模型部署 踩坑记录

自己训练了一个只有2种类别的yolov8模型之后&#xff0c;部署到瑞芯微RKNN。 踩坑一&#xff1a;类别的变化 之前用COCO数据集训练的.pt模型转rknn后&#xff0c;output0的shape为8400 x 176. 而把自定义数据集训练的模型转rknn后&#xff0c;output0的shape为8400 x 98. 为什…

法大大举办2023年伙伴大会:AI赋能,建设生态2.0

“数智‘签’引&#xff0c;聚力共赢——法大大2023年伙伴大会”10月13日在深圳隆重举办。包括腾讯、德勤、PWC、安永、金蝶、致远互联、明源云、蓝凌、玄武、甄零科技、北森、司享网络、明道云、企企通等在内的100多家企业服务厂商及企业高层代表齐聚一堂&#xff0c;探讨AI浪…

探索UI设计|栅格系统的深入分析和应用

界面排版太乱了。你知道网格系统的用途吗&#xff1f;网格系统困扰着许多初级网页设计师&#xff0c;就像一个谜。如果您对网格在设计中的应用有任何疑问&#xff0c;本文是为您量身定制的&#xff0c;并深入分析UI设计中网格系统的基本要素和优点。 什么是网格系统 网格系统…

制造企业有了ERP,是否需要MES系统?

导 读 ( 文/ 1656 ) 在制造业的数字化转型中&#xff0c;企业常常会引入企业资源计划&#xff08;ERP&#xff09;系统来实现企业级的信息管理和资源规划。然而&#xff0c;对于制造企业而言&#xff0c;是否还需要引入制造执行系统&#xff08;MES&#xff09;系统呢&#xf…

【c++源码】老飞飞源码完整v15源码(包含数据库前端后端源文件)

老飞飞源码完整v15源码&#xff08;包含数据库前端后端源文件&#xff09;程序来源于国外网站。程序仅供参考学习游戏开发流程。以及框架内容。 测试环境搭建 Visual Studio 2013 SQL Server 2008r Windows 10 和 11 专业版 这些文件已经过测试&#xff0c;搭建&#xff0c;运行…

介绍一款小巧的Excel比对工具-DiffExcel

【缘起&#xff1a;此前找了一通&#xff0c;没有找到免费又好用的Excel比对工具&#xff0c;而ExcelBDD需要把Excel文件存放到Git&#xff0c;因此迫切需要Excel比对工具。 最新升级到V1.3.3&#xff0c;因为git diff有变化&#xff0c;原来是git diff会修改文件名&#xff0…

数字化转型背景下,MES管理系统的新特征是什么

近年来&#xff0c;随着智能制造的快速发展&#xff0c;MES管理系统作为生产过程中的重要管理系统&#xff0c;也越来越受到企业的关注和应用。在实现MES系统的过程中&#xff0c;需要将JIT思想融入其中&#xff0c;实现业务流程管理的自动化&#xff1b;同时&#xff0c;也需要…

c语言练习86:移除元素

移除元素 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额…

EtherCAT转Modbus-TCP协议网关与DCS连接的配置方法

远创智控YC-ECTM-TCP&#xff0c;自主研发的通讯网关&#xff0c;将为你解决以太网通讯难题。YC-ECTM-TCP是一款EtherCAT主站功能的通讯网关&#xff0c;能够将EtherCAT网络和Modbus-TCP网络连接起来。它可以作为EtherCAT网络中的主站使用&#xff0c;同时也可以作为Modbus-TCP…

Django Test

Django--Laboratory drug management and early warning system-CSDN博客 创建项目doinglms django-admin startproject doinglms python manage.py runserver 运行开发服务器(Development Server) 创建一个自定义 App,名称为 lms: python manage.py startapp lms

HJ86 求最大连续bit数

目录 一、题目 二、代码 一、题目 求最大连续bit数_牛客题霸_牛客网 二、代码 #include <iostream> #include<stack> #include<vector> using namespace std; void TEN_to_TWO(int x, vector<int>& data) { //10进制转换成二进制stack<int&…

androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边

androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边 Android Toolbar左、中、右对齐-CSDN博客&#xfeff;&#xfeff;Android Toolbar左、中、右对齐默认的Android Toolbar中添加子元素view是从左到右依次添加。需要注意的是&#xff0c;Android Toolbar为自身的…

与HTTP相关的各种概念

网络世界 网络世界中最重要的一个名词就是互联网&#xff08;Internet&#xff09;,它以TCP/IP协议族为基础&#xff0c;构建成了一望无际的信息传输网络。而我们通常所说的“上网”&#xff0c;主要就是访问互联网的一个子集——万维网&#xff08;World Wide Web&#xff09…

虹科方案 | 车载以太网转换器交换机解决方案

全文导读&#xff1a;虹科推出的基于转换器&交换机的车载以太网解决方案&#xff0c;旨在满足汽车领域对高速、可靠、安全的数据传输和系统集成的需求&#xff0c;并且具有高稳定性&#xff0c;在转换过程中不修改任何数据包&#xff0c;有效应用于传感器数据采集、台架测试…

【机器学习】sklearn特征选择(feature selection)

文章目录 特征工程过滤法&#xff08;Filter&#xff09;方差过滤相关性过滤卡方过滤F验表互信息法小结 嵌入法&#xff08;Embedded&#xff09;包装法&#xff08;Wrapper&#xff09; 特征工程 特征提取(feature extraction)特征创造(feature creation)特征选择(feature se…

C++入门篇---(2)函数重载

1.函数重载的概念 函数重载&#xff1a; 是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名…

[Vue]之Jwt的入门和Jwt工具类的使用及Jwt集成spa项目

一&#xff0c;jwt入门 1.1 是什么&#xff1f; JWT&#xff0c;全称为 JSON Web Token&#xff0c;是一种用于在网络应用之间传递信息的标准方法。它是基于 JSON 格式定义的一种简洁且自包含的方式&#xff0c;可以安全地在用户和服务之间传输声明信息 1.2 为什么要使用 ①简…

动态分区分配算法之首次适应算法,最佳适应算法,最坏适应算法以及邻近适应算法

1.首次适应算法(First Fit) 1.算法思想: 每次都从低地址开始查找&#xff0c;找到第一个能满足大小的空闲分区。 2.如何实现: 空闲分区以地址递增的次序排列。 每次分配内存时顺序查找空闲分区链&#xff08;或空闲分区表&#xff09;&#xff0c;找到大小能满足要求的第一…

简单实现一个todoList(上移、下移、置顶、置底)

演示 html部分 <!DOCTYPE html> <html> <head><title>表格示例</title> </head> <body><table border"1"><thead><tr><th>更新时间</th><th>操作</th></tr></thead…

Python 的安装

二、Python 的安装 因为 Python 是跨平台的&#xff0c;它可以运行在 Windows、Mac 和各种 Linux/Unix 系统上。目前&#xff0c;Python 有两个版本&#xff0c;一个是 2.x 版&#xff0c;一个是 3.x版&#xff0c;这两个版本是不兼容的。本草根安装的是 3.6.1 版本的。 至于…