首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android入门教程 | Fragment 基础概念

实际上,如果要将现有 Android 应用转换为使用片段,可能只需将代码 Activity 方法移入片段相应方法中。...如要为片段提供布局,必须实现 onCreateView() 回方法,Android 系统会在片段需要绘制其布局时调用该方法。此方法实现所返回 View 必须是片段布局视图。...不过,调用 commit() 之前,可能希望调用 addToBackStack(),以将事务添加到片段事务返回栈。该返回栈由 Activity 管理,允许用户通过按返回按钮返回上一片段状态。...它会经历以下状态 onStart() onResume() Fragment进入“后台模式”时候 它会经历以下状态 onPause() onStop() Fragment被销毁了(或者持有activity...此时左右两个 Fragment 都会执行 onAttach->….->onResume 生命周期,明明 Fragment 没有显示却已经到onResume 了,某些情况下会出现问题。

3.5K40

Fragment基本使用

onDestroyView():当FragmentUI视图结构中移除时调用。 onDestroy():销毁Fragment时调用。...remove()、replace()方法将碎片活动中移除,但如果在事务提交之前调用addToBackStack()方法,这时碎片也会进入到停止状态。...或者调用FragmentTransactionremove()、replace()方法将碎片活动中移除,但在事务提交之前没有调用addToBackStack()方法,碎片也会进入到销毁状态。...onRestoreInstanceState()onStart()之后,onResume()之前,因此避免出现该异常方案有: 不要把Fragment事务放在异步线程中 逼不得已时使用commitAllowingStateLoss...,方法一 return rootView; } onCreateView()中,还没有创建视图,所以在这里如果使用getView()方法将返回空 另一种方法是onActivityCreated

1.9K30

深入理解LayoutInflater.inflate()

当在FragmentonCreateView()方法中填充并返回View时,要将attachToRoot设为false。...,它会作为inflate()方法中第二个参数被传入onCreateView()中。...sConstructorMap集合中获取当前View对应构造方法,如果没有则根据当前全类名创建构造方法,并且存入sConstructorMap缓存中。 2....会走到onCreateView方法创建,前面的分析已经知道当我们使用LayoutInflater时候,其实是使用其实现类PhoneLayoutInflater,复写了onCreateView方法,该方法里同样会通过...createView这样方法创建对应View对象,并且传入”android.widget.”这样包名,这就是为什么我们使用系统自带View控件时候,不需要写全类名原因。

63520

Android:Fragment + Activity 二合一

实现前,我先说明Fragment几个相关知识点: 1、Fragment视图部分其实就是onCreateView返回View; 2、同一个Activity里多个通过add装载Fragment...);; add+show/hide情况 3、通过replace装载Fragment,他们视图层是替换,replace()会销毁当前Fragment视图,即回onDestoryView,返回时...,重新创建视图,即回onCreateView; replace情况 4、不管add还是replace,Fragment对象都会被FragmentManager保存在内存中,即使app在后台因系统资源不足被强杀...对于Fragment,如果本身在Fragment跳转时,就不为其设置转场动画,那就可以直接使用了; 如果你使用了setCustomAnimations(enter,exit)或者setCustomAnimations...(B): 一方面是新addB本身就是可见状态,不管你是show还是不调用show,都不会回BonHiddenChanged方法; 另一方面,如果你调用了show,滑动返回会后出现异常行为,回到PreFragment

65220

Android开发:实现滑动退出 Fragment + Activity 二合一

实现前,我先说明Fragment几个相关知识点: 1、Fragment视图部分其实就是onCreateView返回View; **2、同一个Activity里多个通过add装载Fragment...()会销毁当前Fragment视图,即回onDestoryView,返回时,重新创建视图,即回onCreateView; [937851-0f4a9855fc1bfe40.png] replace...add+hide方式实现 第1条,我们可以知道onCreateViewView就是需要放入SwipeBackLayout子View,我们给该子View一个背景色,然后SwipeBackLayout...对于Fragment,如果本身在Fragment跳转时,就不为其设置转场动画,那就可以直接使用了; 如果你使用了setCustomAnimations(enter,exit)或者setCustomAnimations...(B): 一方面是新addB本身就是可见状态,不管你是show还是不调用show,都不会回BonHiddenChanged方法; 另一方面,如果你调用了show,滑动返回会后出现异常行为,

88530

【Android开发基础系列】Fragment专题

1.3.2 必须实现三个回函数   onCreate()   系统创建Fragment时候调用这个方法,这里应该初始化相关组件,一些即便是被暂停或者被停止时依然需要保留东西。   ...存储时利用onSaveInstanceState()回函数,恢复时是onCreate(),onCreateView(),或者onActivityCreated()里。...当你移除一个fragment时候,如果commit()之前没有调用addToBackStack(),那个fragment将会是destroyed;如果调用了addToBackStack(),这个fragment...这样做通常是没有必要,除非这个transaction被其他线程依赖。   ...注意:你只能在activity存储状态(当用户要离开activity时)之前调用commit(),如果在存储状态之后调用commit(),将会抛出一个异常。

22730

Android仿微信Viewpager-Fragment惰性加载(lazy-loading)

前言 今天起床,拿起手机开机第一时间当然是打开微信了,左右滑动Viewpager,发现使用了一种叫惰性加载,或者说懒加载(lazy-loading)方式加载Viewpager中Fragment。...Fragment生命周期 3.刚被new出来Fragment并没有开始生命周期,当它被添加到FragmentManager时生命周期才开始。...4.我们通常是onCreateView()中对Fragment完成视图构建。若是要实现延迟加载,可以调用onCreateView时获得一个空container引用。...我们现在有4个page,onCreateView()、onStart()、onResume()分别共调用了4次,由此可知,尽管Fragment没有被展示,ViewPager也会将它们构建起来,会回onStart...我们可以自定义一个抽象类LazyFragment,重写onCreateView()方法,只返回一个简单,甚至是空(不是null)ViewGroup作为Container,比如return new

1.3K31

android之Fragment(官网资料翻译)

然而,一个正常尺寸屏幕(例如手机)上,没有足够空间同时供2个fragment用, 因此, Activity A会仅包含文章列表fragment, 而当用户选择一篇文章时, 它会启动ActivityB...onCreateView()回方法, 当到了fragment绘制它自己layout时候,Android系统调用它.你此方法实现代码必须返回一个你fragment layout根view...注意: 如果你fragment是ListFragment子类,默认实现是返回onCreateView()返回一个ListView,所以一般情况下不必实现....onCreateView()返回View, 也可以从一个layoutxml资源文件中读取并生成....默认情况下, activity停止后, 它会被放到一个由系统管理用于保存activity后台堆栈.(因此用户可以使用BACK按键导航回退到).

61620

Android LayoutInflater Factory 源码解析

1、LayoutInflater.Factory 简介 LayoutInflater.Factory 中没有说明,那我们来看下唯一方法说明: Hook you can supply that is...举个简单例子:比如你 XML中 写了一个 TextView标签,然后 onCreateView 这个回里 判断如果 name 是 TextView 的话可以变成一个Button,这样功能可以实现例如批量更换某一个控件等用途...super.onCreate 之后调用会报错; 细心小伙伴肯定也明白了,为什么我们 super.onCreate 之前设置 Factory之后,系统再次设置 Factory 时候不会抛出异常; 备注...,高版本中一些 widget 新特性就是这样老版本中也能展示。...其实系统兼容我们仍然可以保存下来,因为系统是通过 AppCompatDelegate.onCreateView 方法来实现 widget 兼容,那我们就可以设置 Factory 时候先调用 AppCompatDelegate.onCreateView

79720

安卓-碎片使用入门

可以说这样写代码好处是不会IDE是不会报错引用错误,坏处是和程序执行顺序正好相反,但是如果你深谙代码执行逻辑,首先就是activity_main文件中通过android:name来引用这个碎片类...这样就完成了活动中动态添加碎片功能,重新运行程序,可以看到和之前相同界面,然后点击一下按钮,效果如图4.6所示。 ?...说实在,这个问题并没有看上去那么复杂,基本思路非常简单,首先在一个碎片中可以得到与它相关联活动,然后再通过这个活动去获取另外一个碎片实例,这样也就实现了不同碎片之间通信功能,因此这里我们答案是肯定...停止状态 ​ 当一个活动进入停止状态时,与它相关联碎片就会进入到停止状态,或者通过调用FragmentTransactionremove() 、replace() 方法将碎片活动中移除,但如果在事务提交之前调用...或者通过调用FragmentTransactionremove() 、replace() 方法将碎片活动中移除,但在事务提交之前没有调用addToBackStack() 方法,这时碎片也会进入到销毁状态

1.3K20

Fragment初识

不过,在手机尺寸屏幕上,没有足以储存两个片段空间,因此Activity A 只包括用于显示文章列表片段,当用户选择文章时,它会启动Activity B,其中包括用于阅读文章第二个片段。...之前没有调用addToBackStack()方法将 Fragment添加到back栈中的话;又或者退出了Activity的话,那么Fragment将会被完全结束, Fragment会进入销毁状态 onPause...使用v4包下Fragment要注意地方: ①如果你使用了v4包下Fragment,那么所在那个Activity就要继承FragmentActivity或者其子类如AppCompatActivity...案例:今天xml文件中静态地载入fragment,然后重写了Fragment,但是加载Activity时候就报错了, 大概提示就是Fragment错误还是找不到什么,name属性改了几次还是错...Step 1:定义Fragment布局 Step 2:自定义一个Fragment类,需要继承Fragment或者子类,重写onCreateView()方法 该方法中调用:inflater.inflate

1.2K20

Android应用界面开发——Fragment(实现图书详情界面)

接下来实现方法,例如:onCreate()、onCreateView()、onStart()、onResume()、onPause()、onStop()等等。...onCreateView():当Fragment绘制界面组件时会回该方法。该方法必须返回一个View,该View也就是该Fragment所显示View。...调用commit()之前,也可以调用addToBackStack()将事务添加到Back栈,该栈由Activity负责管理,这样允许用户按下Back键返回到前一个Fragment状态。...onCreateView():每次创建、绘制该FragmentView组件时回该方法,Fragment将会显示该方法返回View组件。...onDetach():将该FragmentActivity中删除、替换完成时回该方法,onDestroy()方法后一定会回onDatach()方法,该方法只会被调用一次。

2.5K20

Android高频面试专题 - 基础篇(二)Fragment

onCreateView(): 每次创建、绘制该FragmentView组件时回该方法,Fragment将会显示该方法返回View组件。...onDetach(): 将该FragmentActivity中删除、替换完成时回该方法,onDestroy()方法后一定会回onDetach()方法,该方法只会被调用一次。...而fragmentStatePagerAdapter切换页面的时候调用是remove()方法,是真正回收内存,所以适用于页面较多情况。...方法,在此方法中进行保存数据,然后onCreate或者onCreateView或者onActivityCreated进行恢复都可以。...() 隐藏当前Fragment,仅仅是设为不可见,并不会销毁 transaction.show() 显示之前隐藏Fragment detach() 会将viewUI中移除,和remove()不同,

1.4K10

Android基础:Fragment,看这篇就够了

Fragment有很多可以复写方法,其中最常用就是onCreateView(),该方法返回FragmentUI布局,需要注意是inflate()第三个参数是false,因为Fragment内部实现中...onDestroyView():当FragmentUI视图结构中移除时调用。 onDestroy():销毁Fragment时调用。...当用户点返回按钮回退事务时,F1会调onCreateView()->onStart()->onResume(),因此Fragment事务中加不加addToBackStack()会影响Fragment生命周期...如果没有加入回退栈,则用户点击返回按钮会直接将Activity出栈;如果加入了回退栈,则用户点击返回按钮会回滚Fragment事务。...()会在onCreateView()之前调用一次,如果此时调用,UI还没有inflate,因此不能加载数据。

4.8K122

Fragment 学习笔记(1)

1.OnAttach(Activity)  一旦Fragment关联了依存Activity回   2.OnCreate(Bundle)   Fragment初始创建回   3.OnCreateView...(LayoutInflater,ViewGroup,Bundle) 创建并返回该Fragment相关联视图层次结构回   4.OnActivityCreated(Bundle) 通知Fragment...宿主ActivityOnCreate()调用完成   5.OnViewStateRestored(Bundle) 通知Fragment所有保存视图层次结构已被恢复   6.OnStart() Fragment...被用户可见(基于包含activity启动)   7.OnResume() 可以与用户进行交互  作为一个Fragment不再被使用,它会通过一个回系列函数: 1.onPause() 2.onStop...() 3.onDestroyView() 允许该Fragment 清除他相联系视图. 4.onDestroy() 做最后清理碎片状态 5.onDetach() Fragment之前不在于活动相关

62050
领券