首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android入门教程 | Fragment 基础概念

不过,当 Activity 正在运行(处于已恢复生命周期状态)时,可以独立操纵每个片段,如添加或移除片段。...通常,至少应实现以下生命周期方法: onCreate() 系统会在创建片段时调用此方法。当片段经历暂停或停止状态继而恢复后,如果希望保留此片段的基本组件,则应在实现中将其初始化。...例如,以下示例说明如何将一个片段替换为另一个片段,以及如何在返回栈中保留先前的状态: // Create new fragment and transaction Fragment newFragment...onDestroyView():在移除Fragment相关视图层级时调用。 onDestroy():最终清楚Fragment状态时会调用。...不过 ViewPager 为了防止滑动出现卡顿,有一个缓存机制,默认情况下 ViewPager 会创建并缓存当前页面左右两边的页面(如Fragment)。

3.5K40

Android Fragment用法知识点的讲解

Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了。...Android Fragment用法的讲解.png Fragment组件 Android Fragment组件.png Fragment是Android 3.0的时候被引入的,主要目的是为了给大屏幕(如平板电脑...图片来源官方: 生命周期 onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated...(): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联

1K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    ,支持你在这里进行一些 ui 操作,如显示/隐藏加载框 3.支持 view 的复用,防止与 ViewPager 使用时出现重复创建 view 的问题 第一点应该是比较需要且常用的一点,之前那篇博客里没有考虑到这点应用场景是我的疏忽...rootView创建完成之后,以便支持ui操作 if (rootView == null) { rootView = view; if (...,保证只有当fragment可见状态发生变化时才回调 * 回调时机在view创建完后,所以支持ui操作,解决在setUserVisibleHint()里进行ui操作有可能报null异常的问题..., * 然后在该方法内将状态设置为下载状态,接着去执行下载的任务 * 最后在 onFragmentVisibleChange() 里根据数据下载状态来控制下载进度ui控件的显示与隐藏...尽量让模块之间,类之间的耦合减少些,之所以这样是为了后面更深入理解mvp做准备,总之,代码应该还是很容易可以看懂的吧,欢迎大家star交流。

    1.6K70

    Android交流会-碎片Fragment,闲聊单位与尺寸

    Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了。...() -> onStart() -> onResume() -> 运行状态 -> onPause() -> 暂停状态 -> onStop() -> 停止状态 -> onDestroyView() ->...onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated(...): 表示活动已被创建完成了,这里是activity创建成功; onStart(): 片段对用户可见; onResume(): 片段与用户开始交互; onPause(): 片段与用户不再交互;...onStop(): 片段不再对用户可见; onDestroyView(): 销毁与其View相关资源; onDestroy(): 销毁一切片段; onDetach(): 片段与其活动不再相关联。

    1.2K20

    手把手教你封装一个健壮的MVP框架,面向接口开发。

    注意: 框架中继承了状态栏处理工具 immersionbar,使用时只需实现 setToolbar(), 然后传入相应的view即可。...的工厂实现类 * * @param viewClazz 需要创建Presenter的V层实现类 * @param 当前要创建的Presenter类型...如果直接使用弱引用等,都有被回收的风险,所以更好的处理方式是使用引用队列(当对象被回收时,会将对象放进队列),但同时也要注意,当你get()之后,此时你的引用已经成了强引用。...但其实并不是这样,越是看起来复杂的东西,往往学会之后很简单。...除去DataBing,学会ViewModel+LiveData是非常快的一件事,特别是当你自己封装过MVP之后,就会有一种原来都差不多的感觉。

    42130

    Android学习笔记(六)Fragment的生命周期

    一、Fragment的几种状态:   与Activity类似,Fragment也有一下几种状态:   · 活动状态:当前Fragment位于前台,可见,可获得焦点。   ...· onCreateView(): 每次创建、绘制该Fragment的View组件时回调,Fragment将会显示该方法返回的View组件。   ...· onDestroyView():销毁Fragment的View组件时回调。   · onDestroy():销毁Fragment时调用,一次。   ...· onDetach():将Fragment从Activity中删除、被替换完成时回到该方法,在onDestroy()之后回调。   根据以上方法被回调的时机,我们可以根据需要选择性的覆盖指定方法。...2、息屏状态下: ?   3、重新点亮屏幕: ?   4、退出: ?   其实还有更多的情况,着这里就不一一试验了。这个例子虽然很简单,但能很好的反映了Fragment生命周期中各方法的回调时机。

    957100

    Android之Fragment

    大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。   ...当一个片段指定了自身的布局时,它能和其他片段配置成不同的组合,在活动中为不同的屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或更多)。   ...Fragment对象的初始创建时,调用onCreate(Bundle)方法; 3. onCreateView(LayoutInflater, ViewGroup, Bundle)方法用于创建和返回跟Fragment...3. onDestroyView()方法用于清除跟Fragment中的View对象关联的资源; 4. Fragment对象的状态被最终清理完成之后,要调用onDestroy()方法; 5....当activity处于Resumed状态时,可以自由地添加和移除fragment,也即是说,只有activity在Resumed状态时,fragment的状态可以独立改变。

    67320

    Android开发:5分钟解析Activity&Fragment生命周期

    详细解读每个方法的调用场景 onCreate():当创建启动时调用 onStart():当处于可见状态时调用 调用场景:Activity启动:onCreate()->onStart()->onResume...被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用 onStop() 调用场景:“the activity is no longer visible”...详细解读每个方法的调用场景 onAttach方法 Fragment和Activity建立关联的时候调用(获得activity的传递的值) onCreateView方法 为Fragment创建视图...执行oncreate方法完成了的时候会调用此方法) onDestroyView方法 Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局) onDetach方法 Fragment...onStart() onResume() 1.2可以理解为从创建到显示(或切换) 当这个fragment进入“后台模式”的时候,它会经历以下状态。

    1.7K30

    Android架构之路-三步实现MVP架构(下)

    在上一篇我已经介绍了MVP的概念,还有对Google官方的示例进行了讲解。请移步:Android架构之路-三步实现MVP架构(上)。本文我将带领大家一起架构MVP。 ?...8、presenter:就是MVP中的P,俗称媒介。 9、ui:MVP中的V,我把adapter(适配器)和widget(自定义View)也放在这个包。 10、utils:存放一些开发中的工具类。...() { super.onDestroyView(); //关闭软键盘 hideSoftInput();...到此为止,MVP架构已经完成了,是不是很简单。这个是最基础的MVP架构,后面我也会结合Clean思想,进行重新架构。...2、在model的实现类中的DataRequestListener回调监听,当有多个请求的时候,我这边需要创建多个DataRequestListener,感觉不是很好,希望弄有好的解决方法和我一起探讨。

    49720

    Android - 懒加载

    那我们写一个公共的方法,注意此方法执行,要放到onActivityCreate()之后,否则我请求回来的数据载体控件的Activity都没有创建,所以我要定义几个变量来查看Fragment的状态,我们之前也说了...().getSimpleName(),"-----> onStart"); //当 View 被销毁的时候我们需要重新设置 isViewCreated mIsFirstVisible 的状态...是否已经创建**/ private boolean isViewCreated = false; /**当前Fragment的可见状态,一种当前可见,一种当前不可见**/ private boolean...被销毁的时候我们需要重新设置 isViewCreated mIsFirstVisible 的状态 isViewCreated = false; mIsFirstVisible = true...() { super.onDestroyView(); //当 View 被销毁的时候我们需要重新设置 isViewCreated mIsFirstVisible 的状态

    1.2K20

    Android架构之路--三步实现MVP架构(基础篇-下)

    在上一篇我已经介绍了什么是MVP,还有对Google官方的示例进行讲解,还有不懂得,可以看Android架构之路--三步实现MVP架构(基础篇-上)。现在我将带领大家一起架构MVP。...8、presenter:就是MVP中的P,俗称媒介。 9、ui:MVP中的V,我把adapter(适配器)和widget(自定义View)也放在这个包。...() { super.onDestroyView(); //关闭软键盘 hideSoftInput(); if (mPresenter...这个是最基础的MVP架构,后面我也会结合Clean思想,进行重新架构。...2、在model的实现类中的DataRequestListener回调监听,当有多个请求的时候,我这边需要创建多个DataRequestListener,感觉不是很好,希望大佬们又好的解决方法。

    25210

    ViewPager2与Fragment

    : 当Fragment显示/不可见的时候会回调显示状态(isVisible) onResume : 在该回调中判断当前Fragment是否可见 , 如果可见的话 , 进行懒加载 只有通过以上两个方法来进行懒加载...ViewPager2与Fragment配合使用 在ViewPager2中 , 官方将Fragment的生命周期纠正了 , 可以随着ViewPager2的左右切换来回调Fragment当前的状态....ViewPager2设置Adapter的生命周期回调 在setAdapter之后 , ViewPager会回调onAttach、onCreate、onCreateView、onActivityCreate...向右再翻五页(即展示Fragment6) 当页面缓存超过7个时 , 会将最后使用的Fragment销毁回收 优先创建操作 , 然后再进行回收 , 最后进行展示 // 创建3 E/CardFragmentTag...向左翻两页(即展示Fragment4) 由于之前的Fragment都处于onStart状态 , 所以当划过去之后 , 只会回调onResume 由于向左滑动超过缓存数量 ,所以f7会被回收 // 向左滑一页

    2.8K20

    一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)

    我们一般在写网络请求的时候,如果不涉及什么MVP,或者别的,就一个简单网络请求,然后再成功的结果里刷新View,请求过程中总不能白屏吧,所以有些人可能会让转一个圈,或者显示加载中的布局,然后等成功后再隐藏掉...这样的话,也没什么问题,但是如果你的状态需要多个,这个时候就很烦了。总不能每个状态的判断一下吧。再者说这样也不利于你解耦。...(0),/*加载中的状态*/ STATE_SUCCESS(1),/*加载成功的状态*/ STATE_ERROR(2),/*加载失败的状态*/ STATE_EMPTY(3);/*加载数据为空的状态...,我只需要关心它加载回来之后的数据,然后根据数据刷新View * @return */ public abstract Object loadData(); } 现在看一下它的四种不同状态view...protected abstract Object requestData(); @Override public void onDestroyView() { super.onDestroyView

    1.2K40

    Dropbox 是如何解决 Android App 的内存泄漏问题的?

    最新的 Android 模式,如 ViewModel 和 LifecycleObserver 可以帮助避免内存泄漏,但如果你遵循旧的模式或不知道要注意什么,很容易漏过错误。...例如,假设活动以某种方式创建了对其子 Fragment 的引用。然后,只要活动还在,Fragment 也会继续存在。...首先,视图现在将在服务的整个持续时间内保持活动状态。此外,因为视图持有对其父活动的引用,所以该活动现在也会泄漏。...我们甚至可以更进一步,使用 Bugsnag Integration 将其连接到项目管理软件,如 Jira,以获得更好的可见性和问责制。...他们提供的代码片段建议我们做以下工作: private var _binding: ResultProfileBinding?

    95930

    Dropbox 如何解决 Android App 的内存泄漏问题?

    最新的 Android 模式,如 ViewModel 和 LifecycleObserver 可以帮助避免内存泄漏,但如果你遵循旧的模式或不知道要注意什么,很容易漏过错误。...例如,假设活动以某种方式创建了对其子 Fragment 的引用。然后,只要活动还在,Fragment 也会继续存在。...首先,视图现在将在服务的整个持续时间内保持活动状态。此外,因为视图持有对其父活动的引用,所以该活动现在也会泄漏。...我们甚至可以更进一步,使用 Bugsnag Integration 将其连接到项目管理软件,如 Jira,以获得更好的可见性和问责制。...他们提供的代码片段建议我们做以下工作: private var _binding: ResultProfileBinding?

    1.1K10
    领券