Fragment相关知识点

Flutter开发之——Android-Flutter添加到Fragment 针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。 阅读详情


一、fragment为什么被称为第五大组件

Android四大组件包括,Activity、Service、Broadcast Receiver、Content Provider,而Fragmnet不仅具有自己的生命周期,而且使用的频率也很突出,它能够灵活的加载到Activity中去,所以也有称Fragment为第五大组件的说法。


二、Fragment加载到Activity的方式

1、静态加载,将Fragment通过<fragment>标签加入到xml文件中。从而实现静态加载Fragment到Activity中去。

2、动态加载步骤:

1获取FragmentManager对象,通过FragmentManager的beginTransaction()方法获取FragmentTransaction对象。

2调用add()方法,添加Fragment对象

3调用FragmentTransaction的commit()方法,提交事务


三、FragmentPagerAdapter和FragmentStatePagerAdapter的区别

我们主要关注他们的destroyItem的方法,我们先看源码再看结论:

FragmentPagerAdapter

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        if (mCurTransaction == null) {
            mCurTransaction = mFragmentManager.beginTransaction();
        }
        if (DEBUG) Log.v(TAG, "Detaching item #" + getItemId(position) + ": f=" + object
                + " v=" + ((Fragment)object).getView());
        mCurTransaction.detach((Fragment)object);
    }
在FragmentPagerAdapter 最后他是调用了FragmentTransaction的detach方法,它只是分离了Fragment和Activity,并没有对Fragment进行回收内存


FragmentStatePagerFragment

  @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        Fragment fragment = (Fragment) object;

        if (mCurTransaction == null) {
            mCurTransaction = mFragmentManager.beginTransaction();
        }
        if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object
                + " v=" + ((Fragment)object).getView());
        while (mSavedState.size() <= position) {
            mSavedState.add(null);
        }
        mSavedState.set(position, fragment.isAdded()
                ? mFragmentManager.saveFragmentInstanceState(fragment) : null);
        mFragments.set(position, null);

        mCurTransaction.remove(fragment);
    }
FragmentStatePagerFragment在destroyItem的方法中,它调用了FragmentTransaction的remove方法,对Fragment进行了销毁和回收内存。

所以我们来总结一下面试如何回答这个问题:

FragmentPagerAdapter适用于页面较少的情况,它的destroItem方法只是对Fragment和Activity进行分离,没有对Fragment回收内存,而FragmentStatePagerAdapter适用与页面较多的情况,它会调用remove方法对Fragment回收内存。


四、Fragment生命周期:


onAttach
当Fragment与Activity发生关联时调用。

onCreate

初次创建Fragment调用,创建Fragment,此时Fragment还未创建完成
onCreateView
创建该Fragment的视图

onViewCreated

在Fragment被绘制后,调用此方法,可以初始化控件资源。

onActivityCreated
当Activity的onCreate方法返回时调用

onStart

在Activity的onStart调用后调用,表示Fragment可见了

onResume

在Activity的onResume调用后调用Fragment的onResume方法,此时Fragment可与用户交互

onPause

表示Fragment不可与用户交互

onStop

表示Fragment不可见 

onDestoryView
与onCreateView想对应,当该Fragment的视图被移除时调用

onDestory

表示Fragment被销毁
onDetach
与onAttach相对应,当Fragment与Activity关联被取消时调用


五、Fragment通信

1、在Fragment中调用Activity方法

通过getActivity获取Activity的实例,调用其方法

2、在Activity中调用Fragment方法

使用接口回调的方式调用。

3、在Fragment调用其它Fragment的方法

通过getActivity方法获取activity的实例,然后调用findFragmentById的方法获取Fragment对象,调用其方法。



Android面试相关视频资料可加群392626956免费索取。

android的Fragment知识点详解 简单的基础带过,详细讲述开发app需要用到的碎片技术 立即下载

相关推荐

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 556

Fragment知识点全解析(一)

什么是Fragment?Fragment是在Android 3.0之后被引入的,为了跨分辨率的问题,词如其名,即通过管理分块(碎片)Fragment,更灵活地布局,能在手机、TV、平板上实现一套代码,多种样式的需求。Fragment的名词定义也是碎片、片段的意思。Fragment可以写成可重用的模块,因为它有自己的layout,自己的响应事件,几乎与activity完全相同。从模块化角度去思考,ac

goooed 621

FPGA实战:手把手教你用Verilog驱动4.3寸RGB触摸屏(附完整代码)

本文详细介绍了如何使用Verilog语言在FPGA上驱动4.3寸RGB触摸屏,包括时序设计、信号交互原理及完整代码实现。通过双计数器引擎设计和参数化模块,开发者可以高效构建800*480分辨率的显示驱动,并解决工程实践中的信号完整性和时序收敛问题。

rice5的博客 701

FragmentPagerAdapter 以及 FragmentStatePagerAdapter 对比 以及 PagerAdapter探究

FragmentPagerAdapter以及FragmentStatePagerAdapter都是继承自PagerAdapter,可以看到其中FragmentPagerAdapter和FragmentStatePagerAdapter覆盖的方法都不多,主要是 instantiateItem() destroyItem() setPrimaryItem() finishUpdate...

aliucheng729的博客 909

ASIC--DFT可测性设计工程师

DFT是什么? DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。 DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipmen...

TroubleMaker 2万+

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1067

【Android】再来一篇Fragment懒加载(只加载一次哦)

本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 使用前需知 2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。这些问题我暂时还不知道该怎么解决,后期有时间时会具体去分析下问题该怎么解决。所以你如果要使用该代码,希望考虑一下,我自己的小应用目前是没碰到这些问题。 效果 老规矩,先来看看效果图 没错,我又入坑...

weixin_30736301的博客 439

香橙派5b 移植 imx415

修改设备树,以为例,关闭ov13855,添加imx4151;0;1;0;1;0;1;0;1;0;1;0;1;0;以此类推,修改三个dtsi。

ChenYX的博客 4533

Android基础之fragment

一、fragment与Activity生命周期结合说明 fragment f, Activity a: 创建:f.onAttach()->f.onCreate->f.onCreateView()->f.onViewCreated()---->a.onCreate()->f.onActivityCreated()—>a.onStart()->f.onStar...

u013087553的博客 241

【HYSPLIT 教程第二期】Inline WRF-HYSPLIT 耦合

【HYSPLIT 教程第二期】Inline WRF-HYSPLIT 耦合

WW、forever的博客 808

【人工智能】OpenClaw网关API速率限制报错全解析 API rate limit reached. Please try again later.

对应HTTP标准状态码为429(请求过多)。该报错集中出现在OpenClaw GATEWAY DASHBOARD的聊天会话界面,核心特征为:用户最初以为是单一模型服务商的问题,先后更换OpenAI、Gemini、Ollama、Moonshot、Mercury-2等多个主流大模型API后,该报错仍稳定触发,尤其在执行复杂任务时高频出现。

奶爸的编程之路,也就一周冷个三天 6459

Android之ViewPager,Fragment知识全讲

本课程讲解Android中的ViewPager,Fragment及Android触摸事件的处理,ViewPager和Fragment相互嵌套冲突处理

078、镜头阴影校正:LSC算法原理与标定优化

文章摘要 镜头阴影校正(LSC)是手机影像系统中的关键技术,用于解决镜头渐晕效应导致的画面边缘暗角问题。本文详细分析了LSC算法的核心原理,包括非均匀网格划分、双线性插值等关键技术点,并揭示了标定流程中的常见陷阱(光源均匀性、灰卡反射特性、温度漂移)。文章还深入探讨了增益计算的工程实现细节,以及实际调优中的关键考量因素(色差校正、动态场景适应等)。作者结合15年经验,给出了包括验证方法、网格参数设计、产线标定等实用性建议,强调LSC算法应与光学设计协同优化,才能达到最佳效果。

sundong_81的博客 42

Fragment 相关知识点都在这里了

简介 Fragment (简称碎片)是 Android 3.0(API 11)提出的。为了兼容低版本 support-v4 库中也开发了一套Fragment API 最低兼容到 Android 1.6 的版本。 过去 support-v4 库是一个 jar 包,从 24.2.0 版本开始,将 support-v4 库模块化为多个 jar 包。包含 support-fragment、 support...

jeanboy 951

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

fragment相关知识点总结

一、目录什么是FragmentFragment的生命周期Fragment的使用方式什么是Fragment的回退栈?【重要】Fragment与Activity之间的通信【难点】Fragment与Activity通信的优化【超难点】如何处理运行时配置发生变化【以屏幕翻转为例】二、Fragment详解1. 什么是Fragment ?你可以简单的理解为,Fragment是显示在Activity中的Acti...

z936689039的博客 445

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Fragment面试知识点相关

Fragment面试详解 Fragment为什么被称为第五大组件? Fragment的生命周期 Fragment之间的通信 Fragment的管理器FragmentManager Fragment为什么被称为第五大组件 Fragment为什么被称为第五大组件 Fragment像Activity一样有生命周期,灵活的加载到Activity中,使用频繁的展示页面。 Fragment加载到Activi

542

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Fragment相关知识点学习

(1)Fragment生命周期 (2)Fragment学习总结 静态添加: 静态添加比较容易,自定义Fragment后。在res/la

Mis_wenwen的博客 696

Fragment相关知识点及使用(一)

一、Fragment的静态使用 1、根据需要创建Fragment 1.1创建子类继承Fragment 1.2重写onCreateView()方法,为Fragment设置xml文件,转换成view对象返回 2、在activity布局中,通过标签引入fragment android:name=”fragment的包名.类名” 在activity布局文件中设置如下: <?xml version="...

xuyin1204的博客 862

安卓Fragment相关知识点详解(面试必问!!!)

Fragment面试详解 一.添加fragment到Activity的两种方法 … . 1.静态添加Fragment到Avtivity: 1.1编写xml布局文件 2.编写java类继承Fragment类 3.在刚才编写的java类中重写onCreateView方法,然后利用 View view = inflater.inflate(R.layout.xxx,null); 获取到view对象,...

小王的学习blog 279

Android知识点<2> Fragment 相关知识

1.Fragment 的生命周期一些具体的场景 :具体场景:切换到该Fragment11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 14:26:35.095: D/AppListFragment(7649): onCreate11-29 14:26:35.095: D/AppListFragment(7649): onCreat...

ls__today的博客 160

【notepad附加功能】Android使用fragment实现滑动切换界面

答应大伙的备战金三银四,大厂面试真题来啦!这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。《960全网最全Android开发笔记》《379页Android开发面试宝典》包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。

2401_84413631的博客 886

Android开发(五)--- Fragment

这两天在学Fragment,刚开始感觉还行,但是渐渐深入起来,感觉Fragment学起来挺难的。Fragment必须要和Activity一起使用,所以他们的生命周期都息息相关。 生命周期: 这张图最能形像的说明Activity和Fragment方法之间的先后执行顺序。 每当创建一个Fragment时,首先执行的是Attach,onCreate,onCreateView这三个方法: 主...

zhiguo98的博客 556
上一篇: Android任务栈和启动模式
下一篇: Android面试(Service部分)
VikcyWinner
博客等级 码龄11年 12粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值