安卓学习笔记 - Fragment入门 18

【notepad附加功能】Android使用fragment实现滑动切换界面 最后看一下学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器! 阅读详情

切换碎片

1、创建安卓应用

  • 基于Empty Activity目录创建安卓应用 - SwitchFragment
    在这里插入图片描述
  • 单击【Finish】按钮
    在这里插入图片描述

2、准备图片素材

  • 将三张背景图片拷贝到drawable目录
    在这里插入图片描述

3、字符串资源文件

  • 字符串资源文件 - strings.xml
    在这里插入图片描述
<resources>
    <string name="app_name">切换碎片</string>
    <string name="first_fragment">第一个碎片</string>
    <string name="second_fragment">第二个碎片</string>
    <string name="third_fragment">第三个碎片</string>
    <string name="next_fragment">下一个碎片</string>
</resources>

4、主布局资源文件

  • 主布局资源文件 - activity_main.xml
    在这里插入图片描述
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">    

</FrameLayout>

5、创建碎片

(1)创建第一个碎片

  • 基于模板创建碎片 - FirstFragment
    在这里插入图片描述
  • 设置碎片名称 - FirstFragment
    在这里插入图片描述
  • 单击【Finish】按钮

在这里插入图片描述

  • 修改第一个碎片的布局资源文件 - fragment_first.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@drawable/img01"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".FirstFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:text="@string/first_fragment"
        android:textColor="#ff0000"
        android:textSize="50sp" />

    <Button
        android:id="@+id/btn_next_fragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="doNextFragment"
        android:text="@string/next_fragment"
        android:textSize="30sp" />
</LinearLayout>

  • 查看预览效果
    在这里插入图片描述

(2)创建第二个碎片

  • 基于模板创建第二个碎片 - SecondFragment
    在这里插入图片描述
  • 单击【Finish】按钮

在这里插入图片描述

  • 修改第二个碎片的布局资源文件 - fragment_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@drawable/img02"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".SecondFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:text="@string/second_fragment"
        android:textColor="#00ff00"
        android:textSize="50sp" />

    <Button
        android:id="@+id/btn_next_fragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="doNextFragment"
        android:text="@string/next_fragment"
        android:textSize="30sp" />
</LinearLayout>

  • 查看预览效果
    在这里插入图片描述

(3)创建第三个碎片

  • 基于 模板创建第三个碎片 - ThirdFragment
    在这里插入图片描述
  • 单击【Finish】按钮

在这里插入图片描述

  • 修改第三个碎片的布局资源文件 - fragment_third.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@drawable/img03"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".ThirdFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:text="@string/third_fragment"
        android:textColor="#0000ff"
        android:textSize="50sp" />

    <Button
        android:id="@+id/btn_next_fragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="doNextFragment"
        android:text="@string/next_fragment"
        android:textSize="30sp" />
</LinearLayout>

  • 查看预览效果
    在这里插入图片描述

6、主界面类实现功能

  • 主界面类 - MainActivity
    在这里插入图片描述
package net.hw.switch_fragment;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 利用布局资源文件设置用户界面
        setContentView(R.layout.activity_main);
        
        // 获取碎片管理器
        FragmentManager fm = getSupportFragmentManager();
        
        // 在主容器里添加第一个碎片
        fm.beginTransaction().add(R.id.container, new FirstFragment()).commit();
    }
}

7、启动应用,查看效果

  • 查看第一个碎片有没有显示出来
    在这里插入图片描述

8、碎片界面类实现功能

(1)第一个碎片界面类实现功能

  • 第一个碎片界面类 - FirstFragment
    在这里插入图片描述
package net.hw.switch_fragment;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class FirstFragment extends Fragment {
    
    private Button btnNextFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 获取碎片视图
        View view = inflater.inflate(R.layout.fragment_first, container, false);
        // 通过资源标识符获取控件实例
        btnNextFragment = view.findViewById(R.id.btn_next_fragment);
        // 给按钮注册单击监听器
        btnNextFragment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 切换到第二个碎片
                getFragmentManager().beginTransaction()
                        .addToBackStack("next")
                        .replace(R.id.container, new SecondFragment())
                        .commit();
            }
        });               
        // 返回碎片视图
        return view;
    }
}

(2)第二个碎片界面类实现功能

  • 第二个碎片界面类 - SecondFragment
    在这里插入图片描述
package net.hw.switch_fragment;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class SecondFragment extends Fragment {

    private Button btnNextFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 获取碎片视图
        View view = inflater.inflate(R.layout.fragment_second, container, false);
        // 通过资源标识符获取控件实例
        btnNextFragment = view.findViewById(R.id.btn_next_fragment);
        // 给按钮注册单击监听器
        btnNextFragment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 切换到第三个碎片
                getFragmentManager().beginTransaction()
                        .addToBackStack("next")
                        .replace(R.id.container, new ThirdFragment())
                        .commit();
            }
        });
        // 返回碎片视图
        return view;
    }
}

(3)第三个碎片界面类实现功能

  • 第三个碎片界面类 - ThirdFragment
    在这里插入图片描述
package net.hw.switch_fragment;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class ThirdFragment extends Fragment {

    private Button btnNextFragment;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // 获取碎片视图
        View view = inflater.inflate(R.layout.fragment_third, container, false);
        // 通过资源标识符获取控件实例
        btnNextFragment = view.findViewById(R.id.btn_next_fragment);
        // 给按钮注册单击监听器
        btnNextFragment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 切换到第一个碎片
                getFragmentManager().beginTransaction()
                        .addToBackStack("next")
                        .replace(R.id.container, new FirstFragment())
                        .commit();
            }
        });
        // 返回碎片视图
        return view;
    }
}

9、启动应用,查看效果

  • 启动之后,先看到第一个碎片界面
    在这里插入图片描述

  • 单击【下一个碎片】按钮
    在这里插入图片描述

  • 单击【下一个碎片】按钮
    在这里插入图片描述

  • 单击【下一个碎片】按钮,又回到第一个碎片界面
    在这里插入图片描述

Android左侧菜单栏之DrawerLayout+Fragment 关于DrawerLayout,官方网站给出了相当好的案例 不过对于版本的限定,要求比较高 不过去掉ActionBarDrawerToggle,更换android.app.Fragment 就可以兼容到8了 老规矩,先看效果图,不然浪费大家的时间就是罪过了 看目录结构: fragment中的内容都一样,如果在实际开发中,下面的实现有损性能,各位可以自己优化下 先看布局文 阅读详情

相关推荐

Android使用Fragment,不能得到Fragment内部控件,findViewById()结果是Null--已经解决

程序非常简单,好长时间没有搞定,郁闷。。。。。。。。。。。。 描述: 一个Activity:MainActivity,内部是一个Fragment:FragmentA,FragmentA里面有TextView。 问题:无论如何也得不到FragmentA内部的TextView,返回值永远是Null 具体描述: MainActivity的layout:activity_main.xml

intergameover的专栏 8908

android fragment详解,安卓Fragment使用详解

Fragment是在安卓3.0版本中添加的,主要是为了解决安卓设备尺寸多样化后界面的显示问题。Fragment比Activity较轻量级,也可以提供与用户交互的界面并且有自己的生命周期,也不用在Manifest.xml中注册但它必须嵌套在Activity中使用。之前需要使用多个Activity显示的内容,现在可以用一个Activity嵌套多个Fragment来实现。下面就来说说Fragment的知...

weixin_36379084的博客 1615

Android Fragment展示Unity场景

当我们出去找工作,或者准备找工作的时候,我们一定要想,我面试的目标是什么,我自己的技术栈有哪些,近期能掌握的有哪些,我的哪些短板 ,列出来,有计划的去完成,别看前两天掘金一些大佬在驳来驳去 ,他们的观点是他们的,不要因为他们的观点,膨胀了自己,影响自己的学习节奏。基础很大程度决定你自己技术层次的厚度,你再熟练框架也好,也会比你便宜的,性价比高的替代,很现实的问题但也要有危机意识,当我们年级大了,有哪些亮点,与比我们经历更旺盛的年轻小工程师,竞争。准备想说怎么样写简历,想象算了,我觉得,

2401_84121588的博客 906

详解安卓Fragment(碎片化)

Fragment从字面意思理解就是碎片的意思,当然是为了解决安卓各类设备碎片化严重的问题,比如同样一个App在手机上显示效果还不错,但是一旦上了16:9的平板立刻就变了味,使用安卓平板的同学可能体(bei)会(keng)更深,为此Google官方从android 3.0(对应API 11)引入Fragment,简单理解就是把界面分割成很多碎片,然后根据实际要求最后选择性的进行拼接,比如在手机竖屏模

王呆萌的逼逼叨空间 2341

安卓游乐场:新手Android应用开发入门

Android作为全球使用率最高的移动操作系统之一,拥有庞大的应用生态。该操作系统由Google主导开发,基于Linux内核,支持多种硬件平台。开发者可使用Java、Kotlin等语言,结合Android SDK进行应用开发。Android SDK(Software Development Kit)是开发Android应用时所必需的一套开发工具,它包含各种库文件、开发工具和API文档,使得开发者可以利用Java编写在Android系统上运行的应用程序。

weixin_42577735的博客 1099

基于小波变换的信号降噪处理及仿真研究_信号处理方法推荐--1(转载自用,侵删)...

综述作者:aresmiki链接:https://www.zhihu.com/question/23701194/answer/167005497来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。非平稳信号处理应该是现在信号处理技术最新的也是最热的研究方向了,信号处理方法从最早的时域统计到傅里叶变换的频域分析,是人们认识信号本质的一次巨大飞跃,给了分析人员换个角度看世界的...

weixin_32144483的博客 1249

android fragment入门,Android零基础入门|Fragment显示和隐藏、绑定和解绑

原标题:Android零基础入门|Fragment显示和隐藏、绑定和解绑在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加、移除和替换,本期一起来学习Fragment显示和隐藏、绑定和解绑。 一、Fragment显示和隐藏由于上一期有简单介绍过对应的api,这里直接通过案例来进行学习。创建一个新的module名为fr...

weixin_36391252的博客 1209

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南

本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。

weixin_29162439的博客 535

android fragment出栈,Android零基础入门|Fragment回退栈及弹出方法

原标题:Android零基础入门|Fragment回退栈及弹出方法在上一期分享的文章末尾留了一个课后作业,有去思考如何解决吗?如果已经会了那么恭喜你,如果还不会也没关系,本期一起来学习。 一、回退栈在前面两期的示例中,当我们完成一些操作后,如果想要回到操作之前的状态,一般我们都会按返回键,如下图所示: 然而发现并没有按照我们想要的那样进行,反而退出了程序,那应该怎么得到想要的效果呢?我们知道Act...

weixin_36049771的博客 1167

告别SquareLine!用免费的NXP GUI-Guider为海思3516AV300开发LVGL界面(附完整移植流程)

本文详细介绍了如何利用免费的NXP GUI-Guider工具为海思Hi3516AV300开发LVGL界面,包括环境配置、代码移植和性能优化等全流程实战指南。特别针对二维码组件缺失等常见问题提供解决方案,帮助开发者零成本构建高效嵌入式GUI系统。

weixin_28292761的博客 416

ads设计Doherty功放(1)

Doherty功放的设计

qq_40995480的博客 2万+

Android进阶宝典—在Compose中跳转Fragment

在这种单Activity架构模式下,有一天我们想把MainActivity或者BFragment使用Compose重构,这个时候我们就需要去处理页面跳转事件,即从Compose中跳转到Fragment,处理这种问题的方式有很多,比如: 1. 将要跳转的Fragment修改为Activity,然后在点击事件中startActivity 2. 针对有页面跳转事件的UI采用原生方式编写与Compose混合使用 3. 将要跳转的Fragment包装成Compose页面,构建统一路由

m0_70748458的博客 1626

头歌平台-人工智能导论实验(人脸识别)

答案仅供参考,自己动手丰衣足食!!!

qq_52119136的博客 3026

android 清空回退栈,清空Fragment回退栈中某个Fragment

出栈的方法:getActivity().getSupportFragmentManager().popBackStackImmediate(CreateOneFragment.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);即弹出Tag为CreateOneFragment之上的所有(包括自身)的Fragment。popBackS...

weixin_35892779的博客 1307

主成分分析(Principal Component Analysis,PCA)

主成分分析1.主成分分析1.1 降维(Dimensionality Reduction)1.2 均值(Mean)1.3 方差(Variance)1.4 协方差(Covariance)1.5 协方差矩阵(Covariance Matrix)1.6 线性变换(Linear Transformation)1.7 主成分分析(PCA)1.8 PCA和SVD的关系 1.主成分分析 关于PCA的介绍:用最直观的方式告诉你:什么是主成分分析PCA 笔记来源:Principal Component Analysis (PC

一个搬运知识的笨小孩 3230

Transformer实战(39)——多模态生成式Transformer

能够理解多种类型输入的模型被称为多模态模型。多模态学习是人工智能 (Artificial Intelligence, AI) 领域的重要研究方向之一,长期受到众多研究人员的关注。本节将介绍使用多模态模型的生成式 AI,包括文本到图像 (text-to-image) 和文本到音乐 (text-to-music) 的生成模型。将介绍 Stable Diffusion 及其工作原理,同时也将介绍 MusicGen 和 AudioGen 模型。

盼小辉丶的博客 2432

Android 部分 Fragment 篇

1.Fragment 为什么会被称为第五大组件? Android 中的 4 大组件为:Activity,Broadcast,Service,ContentProvider,那么为什么 Fragment 可以称之为第 5 大组件呢?你可以这么回答: 因为 Fragment 有生命周期,使用频率不输于 4 大组件,可灵活加载到 Activity 中。然 后谈论谈论 Fragment 如何加载到 Activity 中 1.1 Fragment 加载到 Act...

qq_32114025的博客 2472

YOLOv9改进,YOLOv9添加CBAM注意力机制

CBAM是一个简单而有效的注意力模块,用于前馈卷积神经网络。给定一个中间特征图,我们的模块按顺序推断两个独立维度(通道和空间)的注意力图,然后将注意力图乘以输入特征图以进行自适应特征细化。由于 CBAM 是一个轻量级的通用模块,因此它可以无缝集成到任何 CNN 架构中,开销可以忽略不计,并且可以与基础 CNN 一起进行端到端训练。论文链接:(CBAM论文)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 856

Android零基础入门第87节:Fragment添加、删除、替换

​前面学习了Fragment的创建、加载,以及生命周期方法,接下来进一步来学习Fragment具体使用,如Fragment添加、删除、替换。

鑫鱻的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android中fragment切换标题操作

我这里要介绍这种标题的一种方法,我是用fragment来搭建的,最外层是一个Activity,应该会有更好的方法,大家有什么好办法可以一起来讨论 1.先看布局 xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

qixiqinghe的博客 6115

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Java转Android】18. Fragment的使用

left_fragment.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="...

技术宅-Nopi的博客 127

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Flutter开发之——Android-Flutter添加到Fragment

针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

m0_58269520的博客 912

android Fragment 使用

一 、Fragment的理解 Fragment 与activity 相似,但比activity 多出几个方法 ,Fragment的生命周期小于activity   一个Activity 中可以包含多个Fragment ,fragment 就像一个个积木,可以组合成一个大的玩具Activity。 activity oncreate on...

dizha5554的博客 225

Android Fragment

Fragment Fragment是什么 Fragment静态加载怎么用 Fragment动态加载怎么用 ViewPager+Fragment实现页卡滑动 Fragment生命周期 Fragment是什么 Fragment中文为“碎片”,它可以表示Activity中的行为或用户界面部分。我们可以在一个Activity中用多个Fragment组合来构建多窗格的UI,以及在多个Activ...

kidulty666的博客 326

具身智能 2026:启元人形机器人开发者生态的“安卓时刻”来了吗

一个贯穿全文的问题:人形机器人开发者生态,是否正从「封闭垂直」走向「开源平台化」?本文以开源底座的公开数据为标尺,盘点 SDK、URDF、仿真与技能分发的开放程度,并落回启元机器人的开源路径。所有关键数据均标注来源,文末附社区与学堂链接。

在北风吹起的时候加入我们的队伍 在秋雨到来的时候成为彼此的温暖 764
上一篇: 安卓学习笔记 - 单选按钮和复选框 17
下一篇: 安卓学习笔记 - 列表视图 19
HTML778
博客等级 码龄5年 11粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值