Android-Fragment(碎片)

Android面试专题系列(五):说一下Fragment与Activity的关系 不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨—https://blog.youkuaiyun.com/cjm2484836553/article/details/105150473 如果面试官问:“来,说一下什么是Fragment吧,它和Activity有什么关系呢?” 不要觉得Fragment有什么好说的,然后就尬出几个字来。 大家不妨参考一下以下几点,说出个几条来也是不错的呀~ ... 阅读详情

Fragment(碎片)

概念:Fragment在应用的扮演的是模块化、可重用的角色。Fragment定义了自己的布局,以及通过它自己的生命周期回调方法定义了它自己的行为,你可以将Fragment包含在多个activity中。

Activity和Fragment的关系:
Activity----Fragment
房子 ---- 房间

Fragment知识概要
1.Fragment可以作为activity界面的一部分组成出现
2.一个activity中可以放置多个Fragment,而且一个Fragment也可以在多个activity中复用
3.可以在activity运行时动态的添加、删除、替换Fragment
4.Fragment有自己的生命周期,它的生命周期和所在activity的生命周期有一定的关联

详细解读每个方法的调用场景
onAttach方法

Fragment和Activity建立关联的时候调用(获得activity的传递的值)

onCreateView方法

为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)

onActivityCreated方法

当Activity中的onCreate方法执行完后调用(表示activity执行oncreate方法完成了的时候会调用此方法)

onDestroyView方法
Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)

onDetach方法

Fragment和Activity解除关联的时候调用(脱离activity)

fragment生命周期解析
当一个fragment被创建的时候:
onAttach()
onCreate()
onCreateView()
onActivityCreated()

当这个fragment对用户可见的时候,它会经历以下状态。
onStart()
onResume()

当这个fragment进入“后台模式”的时候,它会经历以下状态。
onPause()
onStop()

当这个fragment被销毁了(或者持有它的activity被销毁了):
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()

就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate()
onCreateView()
onActivityCreated()

其他场景的调用
屏幕灭掉

onPause() onSaveInstanceState() onStop()

屏幕解锁

onStart() onResume()

切换到其他Fragment
onPause() onStop() onDestroyView()

切换回本身的Fragment

onCreateView() onActivityCreated() onStart() onResume()

回到桌面

onPause() onSaveInstanceState() onStop()

回到应用

onStart() onResume()

退出应用

onPause() onStop() onDestroyView() onDestroy() onDetach()

Fragment的使用

由于Fragment作为Activity的一部分,所以Fragment的使用一般是添加到Activity中,一般有两种方法将Fragment添加到Activity中:

方法1:在activity的layout.xml文件中声明fragment

方法2:在activity的layout.xml文件中声明包含

方法1
layout文件fragment_layout_test.xml

<fragment android:name=“com.skywang.app.FragmentLayoutTest$ExampleFragment”

android:id="@+id/list"

android:layout_weight=“1”
android:layout_width=“match_parent”
android:layout_height=“match_parent”/>

说明

  1. 该layout只包含了一个fragment元素。
  2. fragment的属性

android:name=“com.skywang.app.FragmentLayoutTest$ExampleFragment”

说明该fragment是定义在包名为”com.skywang.app”中类”FragmentLayoutTest”“的内部类”ExampleFragment”中的。

FragmentLayoutTest.java

package com.skywang.app;

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.view.ViewGroup;

import android.view.LayoutInflater;

import android.widget.TextView;

import android.app.Fragment;

public class FragmentLayoutTest extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
    
    // fragment_layout_test只包括ExampleFragment对象。
     setContentView(R.layout.fragment_layout_test);
    }



// 继承与Fragment

public static class ExampleFragment extends Fragment {
     @Override
    
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                                              Bundle savedInstanceState) {

        
        return inflater.inflate(R.layout.example_fragment, container, false);
    
    }

}

}

说明:

  1. FragmentLayoutTest通过

setContentView(R.layout.fragment_layout_test)

来调用fragment_layout_test.xml来作为布局文件。

  1. 上面的fragment_layout_test.xml布局文件仅仅值包括1个Fragment,该Fragment是通过FragmentLayoutTest的内部类ExampleFragment实现的

  2. 内部类ExampleFragment继承于Fragment,在onCreateView()方法中通过

return inflater.inflate(R.layout.example_fragment, container, false)

来将example_fragment.xml作为其布局文件。
所以,相当于FragmentLayoutTest直接调用example_fragment.xml来显示。

方法2
该Fragment采用动态加载的方式。

FragmentTransactionTest

package com.skywang.app;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.app.Activity;

import android.app.Fragment;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

public class FragmentTransactionTest extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment_transaction_test);

    

    // 获取FragmentManager
    
    FragmentManager fragmentManager = getFragmentManager();
    
    // 获取FragmentTransaction        
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    

    // 获取ExampleFragment
    
    ExampleFragment fragment = new ExampleFragment();
      // 将fragment添加到容器about_fragment_container中
      fragmentTransaction.add(R.id.about_fragment_container, fragment);
            fragmentTransaction.commit();

}



// 继承与Fragment

public static class ExampleFragment extends Fragment {
     @Override
    
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                                              Bundle savedInstanceState) {

        
        return inflater.inflate(R.layout.example_fragment, container, false);
    
    }

}

}

说明:

  1. 在onCreate()中该activit调用fragment_transaction_test作为其布局文件

  2. 在onCreate()中,通过获取FragmentManager和FragmentTransaction,来将ExampleFragment对象添加到R.id.about_fragment_container中,about_fragment_container是一个Fragment。

  3. ExampleFragment的onCreateView()中,将example_fragment作为其布局文件。

fragment_transaction_test.xml

 <FrameLayout
    
 android:id="@+id/about_fragment_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>

example_fragment.xml

 <TextView
    
 android:text="Hello Fragment"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"/>
Fragment与Activity简单使用,包括二者之间的关联与生命周期 随着Android系统的多样化,不仅仅在手机上,在平板、电视等设备上应用的也越来越多,这样就会有一个需要适应不同屏幕的问题。在Android3.0之后,谷歌推出了Fragment,Fragment在Android中被称为碎片。 我们可以把Fragment看作是Activity的一个界面或者组成部分,而且Fragment具有与Activity很相似的生命周期,我们可以在Activity中动态的添加或者移除某个Fragment。 立即下载

相关推荐

【安徽理工大学】一文带你高分拿下计算机考研复试(85+的秘密)

一文带你高分拿下安徽理工大学计算机考研复试(85+的秘密)

猫天意的博客 1524

Fragment和Activity的关系

fff

空杯ly的专栏 1946

202505系分论文《论软件系统测试方法及应用》

本文以软件测试方法为切入点,重点论述分层协作、智能赋能、全流程三个维度下传统测试与自动化测试的融合应用。

pccai的博客 1693

《第一行代码》核心知识点:活动(Activity)的儿子叫碎片(Fragment)

本文讲解Android中的碎片(Fragment),它与活动非常相似,通常可以称为迷你Activity。通过本文你可以了解什么是碎片,它的作用是什么,以及它的基本使用方法和生命周期。

Mekeater的博客 968

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。

Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。

qq_48050838的博客 1万+

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

Android Fragment和Activity

Fragment和Activity   Fragment和Activity的交互   一个Fragment的实例总是和包含它的Activity直接相关。   fragment可以通过getActivity() 方法来获得Activity的实例,然后就可以调用一些例如findViewById()之类的方法。   如:   View listView = getActivity().f...

weixin_34413357的博客 387

Android 13 SPRD 源码默认打开多用户实际无效果问题修复

【代码】Android 13 SPRD 源码默认打开多用户实际无效果问题修复。

m0_60898338的博客 449

Activity和Fragment之间的联系和区别

Android开发中,Acitivity是四大组件中用得非常多的一个组件,也是UI和业务逻辑的一个重要的纽带,那么它和与它很类似的Fragment有哪些联系和区别呢?现在主要从生命周期来谈谈自己的看法。另外也顺便看看onSaveInstanceState这个方法大体是怎么保存状态并在onCreate中恢复状态的。图1、Activity的生命周期首先看Activity的生命周期,有: onCreat

llearner的博客 2万+

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 829

Virtuoso 中的tech file 详细说明

工艺文件(Techfile)是集成电路设计中的核心配置文件,定义了从晶圆制造到版图验证全流程所需的工艺规则和图层属性。在Cadence Virtuoso平台中,Techfile作为连接设计与制造的桥梁,主要包含以下内容: 图层体系定义 金属层、介质层、多晶硅层等物理图层的编号、名称和显示属性 图层用途(DRAW、MASK等)及图层-用途组合(LPP)的优先级 设计规则约束 几何尺寸规则(最小线宽/间距) 包围和延伸规则 密度规则和特殊工艺规则(如天线效应) 器件定义 MOS管、电阻等器件的图层构成 电学参数

u013620135的博客 8132

android碎片与view,安卓之碎片Fragment

碎片介绍碎片使用方式碎片生命周期碎片界面滑动碎片介绍碎片是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间。碎片使用方式1)布局文件添加碎片在xml文件直接使用fragment标签2)动态添加碎片可以在程序运行时动态地添加到活动当中,根据具体情况来动态地添加碎片public class MyFragment extends Fragment {@Overridepubl...

weixin_42462474的博客 346

2026 企查查/天眼查:IP频率限制 + 验证码策略,企业工商数据采集实战

企业工商数据采集技术解析与解决方案 本文深度剖析了2026年企查查和天眼查平台的反爬机制与技术对抗方案。主要内容包括: 反爬机制分析: 采用JA4+ TLS指纹识别、极验v6验证码等多层防护 IP限制策略严格区分未登录/普通/VIP账号 精准识别并封禁数据中心IP 核心解决方案: 构建高可用住宅代理池,动态轮换真实用户IP 基于YOLOv8的验证码缺口识别技术(准确率99%) 分布式架构设计,支持千万级数据采集 多账号池管理与行为模拟技术 技术亮点: 动态住宅IP池实现1%以下封禁率 Playwright浏

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1328

安卓Android碎片fragment实现静态加载

静态加载好后的界面如下,两个碎片分别位于一个活动的左边和右边: 左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满。一个活动当中可以拥有多个碎片,碎片的含义就是可以在同一个UI界面下,将这个界面分成好几个界面,并且可以分别更新自己的状态,如果没有碎片,那么如果你想要单独在某一个区域实现活动的“跳转”就不可能了,因此我们可以引入碎片,这样就可以在这个区域单独进行碎片的跳转。...

极歌科技 323

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android动态碎片,安卓Android碎片fragment实现静态加载

静态加载好后的界面如下,两个碎片分别坐落一个活动的左边和右边:左边和右边分别为一个碎片,这两个碎片正好将一整个活动布满。一个活动傍边能够拥有多个碎片,碎片的含义就是能够在同一个UI界面下,将这个界面分成好几个界面,而且能够分别更新自己的状况,假如没有碎片,那么假如你想要独自在某一个区域完成活动的“跳转”就不或许了,因而咱们能够引进碎片,这样就能够在这个区域独自进行碎片的跳转。在利用底部标题栏进行主...

weixin_39629129的博客 207

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

详解安卓Fragment(碎片化)

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

王呆萌的逼逼叨空间 2341

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

安卓开发Java版—— 碎片 fragment

新建一个左侧碎片布局left_fragment.xml,代码如下所示: 这个布局非常简单,只放置了一个按钮,并让它水平居中显示。然后新建右侧碎片布局right_fragment.xml,代码如下所示 现在编写一下LeftFragment中的代码,如下所示: 这里仅仅是重写了Fragment的onCreateView()方法,然后在这个方法中通过LayoutInflater的inflate()方法将刚才定义的left_fragment布局动态加载进来,整个方法简单明了。接着我们用同样的方法再新建一个Right

zyw2002的博客 975

在android studio中如何创建一个继承类_Android 碎片(Fragment)讲解

安卓(Android)是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。 碎片是活动的一部分,使得活动更加的模块化设计。我们可以认为碎片是一种子活动。下面是关于碎片的重要知识点 -碎片拥有自己的布局,自己的行为及自己的生命周期回调。当活动在运行的时候,你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个单一的...

weixin_39617252的博客 1227

Android中Fragment嵌套Fragment即碎片中嵌套碎片

其实与活动中嵌套碎片差不多只是改了一个地方,先介绍一下活动中去嵌套碎片: 活动中嵌套碎片代码如下: private void replaceFragment(Fragment fragment){ FragmentManager fragmentManager = getSupportFragmentManager();//这里获取碎片管理器的方法不同于碎片中嵌套碎片这里使用的...

weixin_30569001的博客 598

Android碎片的切换使用代码,Android碎片Fragment的点击切换

Fragment碎片的简单使用1.MainActivity点击切换Fragment碎片package com.example.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.sup...

weixin_28871731的博客 439

Android Fragment碎片

碎片入门

m0_62786921的博客 497

Android Fragment 碎片

Frament简介优势核心类生命周期 你好! 简介 Fragment,是Android 3.0(API 11)提出的,起初是为了解决Andorid 的碎片化,而其简称碎片。为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。 过去support-v4库是一个jar包,24.2.0版本开始,将support-v4库模块化为多个jar包,包含...

chaseDreamer_的博客 362

Android开发4:碎片Fragment的使用

Android开发4:碎片Fragment的使用 文章目录Android开发4:碎片Fragment的使用一、碎片的基本使用二、碎片的生命周期 一、碎片的基本使用 碎片是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛。 知识点: 动态添加碎片 碎片的返回栈 left_fragment.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="ht

qq_43819274的博客 365

Android studio开发实战之碎片Fragment

fragment

weixin_51020083的博客 1828

android碎片按钮,Android 碎片(Fragment)

Android 碎片(Fragment)碎片是活动的一部分,使得活动更加的模块化设计。我们可以认为碎片是一种子活动。下面是关于碎片的重要知识点 -碎片拥有自己的布局,自己的行为及自己的生命周期回调。当活动在运行的时候,你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个单一的活动中来构建多栏的UI。碎片可以被用在多个活动中。碎片的生命周期和它的宿主活动紧密关联。这意味着活动被暂停,所有活动中的...

weixin_42351102的博客 264

【Android】碎片Fragment

  1.碎片可以让界面在平板上更好地展示。   2.碎片是一种可以嵌入到活动中的UI片段,它能让程序更加合理和充分地利用一个大屏幕的空间。有自己的生命周期,能包含布局。   3.新建碎片类继承Fragment,可能会有两个不同的Fragment包供选择,一般选择android.app.Fragment(因为程序主要面对4.0以上版本)。   4.如何加载布局?通过inflate()...

a634351453的博客 194
上一篇: Android-ViewPager(翻页控件)
下一篇: Android-swipRefreshLayout(下拉刷新)
Android_xi
博客等级 码龄8年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值