(四)Android基础系列之:Fragment

安卓重要UI组件之 Fragment 阅读详情

一、Fragment生命周期函数

1、当Fragment第一次依附于它所属的activity时自动调用的方法
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}
2、当Fragment被创建时做初始化操作时自动调用的方法
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
3、当Fragment实例化它的用户界面时自动调用的方法,如果当前Fragment没有用户界面则返回null
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_fragment_life_cycler, container, false);
    return view;
}
4、当Fragment所依附的Activity的onCreate()方法执行完毕后自动调用的方法
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}
5、当Fragment对用户可见时自动调用的方法
@Override
public void onStart() {
    super.onStart();
}
6、当Fragment获取焦点时自动调用的方法
@Override
public void onResume() {
    super.onResume();
}

7、当Fragment失去焦点时自动调用的方法
@Override
public void onPause() {
    super.onPause();
}
8、当Fragment对用户不可见时自动调用的方法
@Override
public void onStop() {
    super.onStop();
}
9、当之前通过onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)创建的用户界面被销毁时自动调用的方法
@Override
public void onDestroyView() {
    super.onDestroyView();
}
10、当Fragment不再被使用(销毁)时自动调用的方法
@Override
public void onDestroy() {
    super.onDestroy();
}
11、当Fragment不再依附于他所属的Activity时自动调用的方法
@Override
public void onDetach() {
    super.onDetach();
}

image

image

二、动态的添加,修改和删除Fragment

Activity的回退栈是由系统管理的,
Fragment的回退栈是有它所属的Activity管理的.

1、声明碎片管理器对象
private FragmentManager fragmentManager;
2、得到碎片管理器对象
this.fragmentManager=this.getFragmentManager();
3、添加碎片
 同一个容器中只能添加相同Fragment对象一次,如果对象的引用地址相同,重复添加会报错:
 java.lang.IllegalStateException: Fragment already added: DetailFragment{534da41c #0 id=0x7f0c0053}
  • 通过碎片管理器对象得到碎片事务对象
FragmentTransaction fragmentTransaction=this.fragmentManager.beginTransaction();
  • 实例化详情Fragment 对象
DetailFragment detailFragment=new DetailFragment();
  • 将详情Fragment添加到linearLayout_content容器中
fragmentTransaction.add(R.id.linearLayout_content,detailFragment);
  • 添加当前事务操作到回退栈中,之后可以依次将碎片从回退栈中弹出

注意:要想让下面的代码生效,则必须让当前Activity继承Acivity,不要继承他的其它子类,避免出错

fragmentTransaction.addToBackStack(null);//null:表示使用系统生成的回退栈的名称
  • 提交事务的操作
fragmentTransaction.commit();
4、修改碎片
  • 通过碎片管理器对象得到碎片事务对象
FragmentTransaction fragmentTransaction=this.fragmentManager.beginTransaction();
  • 如果之前不存在Fragment则直接添加,如果存在则先删除之前的Fragment在添加新的Fragment
fragmentTransaction.replace(R.id.linearLayout_content,new SecondFragment());
  • 提交事务的操作
fragmentTransaction.commit();
5、删除碎片
  • 通过碎片管理器对象得到碎片事务对象
FragmentTransaction fragmentTransaction=this.fragmentManager.beginTransaction();
  • 删除碎片对象,根据对象的引用地址判断是否是同一个碎片对象
fragmentTransaction.remove(detailFragment);
  • 提交事务的操作
fragmentTransaction.commit();

三、Fragment中的传值

一)、Activity与Fragment
1、Activity传值到Fragment
  • a、动态添加Fragment同时调用 fragment的myFragment.setArguments(bundle)传值到Fragment并
    在Fragment中使用Bundle bundle=this.getArguments()获取值

  • b、通过FragmentManager查找添加过的Fragment并通过调用 fragment.getView()的View对象进而查找控件并赋值或者通过给fragment添加setter函数传值到 fragment.

2、Fragment传值到Activity
  • a、通过得到Fragment所依附的Activity并给Activity提供 setter函数传值到Activity或者让Activity实现传
    值的接口来完成.

  • b、得到Fragment所依附的Activity并通过findViewById()查找控件并赋值

二)、Fragment传值到Fragment
  • 在一个fragment中得到FragmentManager并查找另一个Fragment之后通过setter函数或者getView()方
    法得到View查找控件并赋值.
    由于两个Fragment在添加到当前Activity时使用的是同一个碎片管理器对象,因此可以通过碎片管理器对象查找另一个碎片对象
RightFragment rightFragment= (RightFragment) getFragmentManager().findFragmentById(R.id.fragment_right);
三)、万能的接口回调(适合所有的传值方式)
1.自定义传值接口
public interface PassValue{
    void setValue(String value);
}
2.声明接口类型的对象
private PassValue passValue;
3.给接口类型的对象提供setter函数
public void setPassValue(PassValue passValue) {
    this.passValue = passValue;
}
4.在传值的目标端(RightFragment)调用setter函数
LeftFragment leftFragment= (LeftFragment) getFragmentManager().findFragmentById(R.id.fragment_left);
leftFragment.setPassValue(new LeftFragment.PassValue() {
    @Override
    public void setValue(String value) {
        textView_content.setText(value);
        System.out.println("===setValue(String value="+value+")====");
    }
});
5.在需要传值的地方调用PassValue接口类型的对象passValue.setValue(需要传递的值);
安卓APP_ Fragment(1)—— Fragment概念、基础用法、动态变换、管理栈 Fragment一、Fragment是什么Fragment的产生原因Fragment两个重要特性具备生命周期寄宿在Activity中运行二、Fragment基础用法简单演示(1)New创建一个Activity(2)添加一个空白的Fragment(3)Fragment 绑定到宿主Activity(4)在Activity中创建两个Fragment具体细节在代码中呈现 一、Fragment是什么 Fragment的产生原因 Fragment很像是小的,简短的Activity。 Fragment在安卓3.0后才开始 阅读详情

相关推荐

Android开发 - 获取当前Fragment对象

根据你的具体应用场景,选择合适的方法来获取当前的Fragment对象。本文将介绍几种获取当前Fragment对象的方法,并提供相应的源代码示例。通过getCurrentItem()方法可以获取当前ViewPager所显示的Fragment的位置,然后通过适配器的getItem()方法获取相应位置的Fragment对象。如果你的应用程序使用ViewPager来管理多个Fragment,那么你可以使用ViewPager的getCurrentItem()方法来获取当前正在显示的Fragment对象。

. 1793

android开发:fragment生命周期

记录Android开发中fragment的生命周期

shakdy的博客 957

android fragment切换防止destroy

最基础的activity内嵌fragment,实现fragment切换,并利用fragment的hide和show防止fragment不断的被销毁和重建,虽然很简单,但是很实用

Fragment的基本知识

Fragment的基本知识

xiaokang666的博客 673

Petalinux实战:3种方法调试AXI UART Lite设备(含minicom/screen/直接寄存器操作对比)

本文详细介绍了在Zynq平台上使用Petalinux调试AXI UART Lite设备的三种实用方法:用户空间工具(minicom/screen)、应用层程序(termios配置)和底层寄存器直接操作。文章对比了各方法的优缺点与适用场景,并重点解析了设备树配置、驱动加载等关键环节,帮助开发者快速定位并解决串口通信中的常见问题。

weixin_29190169的博客 432

第1章>>1.5:神电测控为什么开发LabVIEW ZYNQ FPGA软件工具包?(ZYNQ芯片的特点与优势)《LabVIEW ZYNQ FPGA宝典》

ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC,All-Programmable SoC),它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。Zynq-7000系列是Xilinx于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助、工厂自动化、医疗器械等高端嵌入式应用提供所需的处理能力与计算性能。这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

qq_40694786的博客 1646

fragment中的问题

在extends fragment中设置弹窗时遇到的问题 Toast.makeText的问题 Toast.makeText(login.this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); 在一般的extends AppCompatActivity中可以直接用“当前类名.class”+“要显示的文字”+Toast.LENGTH_SHORT).show()来显示没

Mr.Wei的博客 875

电机控制-PMSM无感FOC控制(四)SVPWM——过调制

上一章我们提到了SVPWM矢量合成的范围在一个平面的矢量圆内,那么当电压矢量超出调制范围时,该怎么做呢?这就是过调制要解决的问题。电机控制-PMSM无感foc控制(三)SVPWM据之前讲解的内容我们可以知道,SVPWM技术在电压空间上模拟了一个近似于圆的电压轨迹,减小了相电流的谐波,降低了电机的谐波损耗,抑制了转矩脉动。然而,SVPWM技术也存在一些问题,合成电压矢量有极限便是其中之一。这个半径为√3/3Vdc的区域也被称作SVPWM的线性区域。

zhuxinmingde的博客 1314

Android中Fragment的解析

一、Fragment详解1. 什么是Fragment ?你可以简单的理解为,Fragment是显示在Activity中的Activity。它可以显示在Activity中,然后它也可以显示出一些内容。因为它拥有自己的生命周期,可以接受处理用户的事件,并且你可以在一个Activity中动态的添加,替换,移除不同的 Fragment,因此对于信息的展示具有很大的便利性。2. Fragment的生命周期因

u014732103的博客 366

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(4)

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(4)

phmatthaus的专栏 1532

电磁兼容(EMC)整改案例(七):EFT测试失败都是IC悬空引脚惹的祸

无论任何时候,为了避免这些问题,通常建议对悬空的IO口进行适当的配置,比如设置为强推挽输出低电平、输入带上拉或下拉电阻等,以减少外部电路对IO管脚状态的影响,并提高系统的稳定性和可靠性.

linkking27的博客 1032

【Android Fragment】Fragment基础

1、fragment “分段”、“碎片”的意思,一般与Activity一起使用,嵌套在activity中表示为Activity界面的一部分。 2、它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activity 中重复使用的“子 Activity”)。 3、当您将片段作为 Activity 布局的一部分添加时,它存在于 Act...

dev晴天的博客 8838

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 856

Android Studio学习:Fragment入门

安卓学习:Frament入门

m0_62491877的博客 2679

ArXiv 2026 即插即用 | Transformer篇 | WeightFormer:告别二次复杂度!无注意力的线性时间 Transformer,泛化能力拉满

WeightFormer是一种创新的动态Transformer架构,其核心创新在于通过双动态算子(空间自适应动态卷积和双边激活动态线性)实现输入自适应的特征提取。该模块采用静态-动态权重融合机制和低秩预测技术,在仅增加5%参数量的情况下显著提升模型泛化能力。相比传统Transformer,WeightFormer在ImageNet-1K上提升2.3%精度,小样本任务提升12%,同时保持线性计算复杂度。模块可直接替换标准Transformer块,特别适合轻量级视觉任务,实现了精度与效率的平衡。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 128

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

教会你如何用自己的数据集转换成对应格式的数据集以及如何训练YOLO11-pose关键点检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5417

安卓基础之Fragment与ViewPager

viewPager与Fragment的组合方式是可以说是当前App开发的标配,所以放在一篇博客中进行描述。 Fragment Fragment是Acttivity界面一个组成部分,基本上目前使用到多个页面的情况下都会用到,其实Fragment最大的作用是分担Activity的代码压力,为了后期维护方便,不把所有的代码罗列到一个Activity中。 构建Fragment 1.Activity布局文件...

wygsqsj的博客 4154

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Activity】安卓Android开发中的Activity、Fragment、Adapter

我最近刚刚接触Android开发,对这个方面的开发可以说是一无所知,所以想着尝试开始理解。在这段时间的摸爬滚打里面,我发现了其中Activity、Fragment、Adapter三种非常常用,所以在这里进行一下我自己的理解。

weixin_67898144的博客 2792

android 蓝牙通讯demo

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android基础之Fragment

本文旨在记录在Android Studio学习中关于Fragment的部分学习过程提示:以下是本篇文章正文内容Fragment 表示应用界面中可重复使用的一部分。Fragment 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。Fragment 不能独立存在,而是必须由 Activity 或另一个 Fragment 托管。Fragment 的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。

fjnu_se的博客 1866

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Fragment】安卓Android开发中的Activity、Fragment、Adapter

前面介绍了Activity,简单地说Activity代表着应用程序中的一个单独的屏幕或界面,用户可以与之交互。那么现在就再来了解一下Fragment。在安卓开发中,Fragment是一种可以嵌入到Activity中的可重用组件,用于构建灵活和模块化的用户界面。与Activity类似,Fragment具有自己的布局和生命周期,并且可以包含用户界面元素和逻辑。

weixin_67898144的博客 1528

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

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

weixin_36379084的博客 1615

android:Fragment基础应用之listFragment

Fragment类:package com.example.administrator.myapplication; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.widget.ArrayAdapter; /** ...

一个程序员-二白的博客 3784

Android Fragment的基础与应用系列文章

Fragment作为Android中重要且使用频繁的组件之一,是Android学习者必须掌握的一个知识点。本系列文章将围绕Fragment的基本概念、基础知识,实际应用进行介绍,希望能给Android初学者带来一些指引和帮助。本系列课程面向零基础、初学者,中级开发者或者有经验的小伙伴可以略过本系列课程,笔者也是Android业余选手,难免疏漏,不足之处,也欢迎各位提出,指正。

fxjzzyo的博客 2384

android的fragment讲解

*显示一个由一个adapter(例如 SimpleCursorAdapter)管理的项目的列表, 类似于ListActivity.它提供一些方法来管理一个list view, 例如 onListItemClick()回调来处理点击事件.显示一个 Preference对象的层次结构的列表, 类似于PreferenceActivity.这在为你的应用创建一个"设置"activity时有用处.

2401_87029424的博客 1934

安卓开发之fragment切换

Fragment是一个灵活的用户界面组件,可以将Activity划分为多个独立的界面,类似小型activity,也具有自己的生命周期和布局。

qq_52175613的博客 1187
上一篇: (三)Android基础系列之:内容提供者
下一篇: (五)Android基础系列之:Intent
azhoufeng
博客等级 码龄10年 10粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值