探究Fragment oncreateview 和 onActivityCreated 方法
来源:互联网 发布:linux怎么退出top命令 编辑:程序博客网 时间:2024/05/18 03:23
最近使用了一个自定义的view在activity中运行正常,可在fragment中就奔溃,无提示,之前view是在onCreateView中初始化并调用的,崩溃,换到onActivityCreated之后,运行ok了,这是什么原因呢??
先看看fragment的生命周期,首次展示界面时
可以看到onActivityCreated是在onCreateView之后调用的,那么如果在onCreateView方法的时候直接初始化view,并调用,和在onActivityCreated时调用,有什么区别呢
网上有网友回复
If your view is static, then moving any code to the onActivityCreated method is not necessary. But when you - for instance, fill some lists from the adapter, then you should do it in the onActivityCreated method as well as restoring the view state when setRetainInstance used to do so.
Also accessing the view hierarchy of the parent activity must be done in the onActivityCreated, not sooner.
哦,,大概意思就是如果view是静态的,那么没有必要在onActivityCreated 方法去调用,大多数的自定义的view,初始化时都需要一个context,而activity是context的子类,所以在onCreateView方法的时候非静态的view初始化调用可能出现异常,所以对于非静态的view,最好在onActivityCreated方法调用
fragment 生命周期的利用
生命周期有 onAttach(),onCreate(),onCreateView(),onActivityCreated();此为创建时会执行的方法
onstart(),onResume(),是变得可见时会执行的方法
onPause(),onStop(),是进入后台会执行的方法。
销毁时会执行 onpause(),onStop(),onDestroyView(),Ondestroy();
我们经常将fragment放在activity中使用,数据是activity获得,而在fragment中展示,那么如何比较简单的实现,在fragment中展示activity的数据呢,
1 我们首先想到的就是,在fragment中增加一个属性,如在fragment中定义一个list集合,然后在activity中调用fragment的构造方法时来给list赋值,可是fragment跟普通的类不一样,他有自己的生命周期,这样做会报错。
2 那么我们是不是就一定要利用回调来实现呢,其实不用,我们刚刚看了onStart()方法,是在进入前台可见时才调用,那么
我们可以在fragment中添加list的set方法,在activity中new 了fragment后,调用set方法给list赋值,最后,重写fragment的onStart()方法,在此方法中展示list的数据
- 探究Fragment oncreateview 和 onActivityCreated 方法
- android开发—Fragment中onCreateView()和onActivityCreated()的区别
- fragment中onCreateView与onActivityCreated的区别,以及fragment中生命周期的利用
- fragment中onCreateView与onActivityCreated的区别,以及fragment中生命周期的利用
- onCreateView 与onActivityCreated 的区别
- Fragment的onCreateView方法参数
- Fragment中的onCreateView方法什么…
- Android Fragment onCreateView方法调用时间
- Fragment的onCreate和onCreateView的区别?
- Fragment的onCreate和onCreateView的区别?
- Fragment的onCreate和onCreateView区别
- Fragment的onCreate和onCreateView的区别?
- fragment onCreate和onCreateView的区别
- Fragment的onCreate和onCreateView区别
- 解决Fragment的OnCreateView
- Fragment onCreateView inflate注意事项
- Fragment onCreateView inflate注意事项
- Fragment onCreateView inflate注意事项
- SSD: Single Shot MultiBox Detector思想精要&技术细节
- C# log4net使用
- opencv中facedetect例子浅析
- MySQL的配置及一些基础操作
- Oracle数据库 常用语法1031
- 探究Fragment oncreateview 和 onActivityCreated 方法
- elasticsearch-5.6.3 安装
- Redis
- 不会接口测试时,该如何使用eoLinker进行接口测试
- scala.xml.Utility 代码实例
- C++程序设计案例实训教程第10章
- ionic Error: spawn EACCES
- Linux(CentOS)下安装JDK
- web service