看了有关这个问题的几篇博文,几乎都是引用了stackoverflow上的一个回答;

问题:
I know that a fragment’s view hierarchy has to be inflated in onCreateView, but what other functionality can be in onCreateView vs. what should wait for onActivityCreated? My current implementation uses separate activities for everything, and a typical activity does most of its work in its onCreate method, including inflating the view, setting the content view, initializing the various widgets with data, setting up listeners, etc.

大概意思就是:哪些代码应该在onCreateView()执行哪些应该在onActivityCreate()中执行;

回答:
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是静态的,那么就没有必要在onActivityCreate()中执行;如果您的View是动态的,比如使用ListView等需要Adapter填充的,View就需要在onActivityCreate()中执行。(静态的View不是指Static View,而是指后期不需要修改的View)

个人理解:
onCreateView():
这个方法就相当于Activity onCreate()方法中的 setContentView()是进行XML视图填充的,这也是为什么setContentView()这个方法几乎要写在onCreate()方法的第一行的原因,因为如果XML视图还没填充,我们就没有办法对每个View进行操作,所以我们在每个Fragment中对每个View进行操作的时候都必须在onCreateView()后面执行。

onActivityCreate():
这个相当于Activity中 onCreate()中 setContentView()这句话后面的代码。

这里可能就有人会想了: 那我完全可以把 对每个View操作的代码放在onCreateView()代码块结尾处写啊,完全没必要分开到onActivityCreate()中写啊,分开写反而让人更容易模糊。

个人理解:
1. 一个是单一原则,能引起一个方法改变的原因只能有一个,onCreateView()只负责视图填充,onActivityCreate()负责对视图修改,如果你的视图不需要修改那就放在onCreateView()中写吧。 当然这个说法不是特别站得住脚。不过还是能帮助记忆的。

最后加上一句刚从stackoverflow上学到的一句话

Don’t think everyone got it, Diffy, but they were just happy with the answer
不要认为每个人都懂了,只是他们对答案满意了
如果您看了这篇博客您觉得我说的对,请您不要以为您懂了,因为这是您对这个答案满意了
---------------------
作者:maxcion
来源:CSDN
原文:https://blog.csdn.net/maxcion/article/details/77906982
版权声明:本文为博主原创文章,转载请附上博文链接!

Fragment的onCreateView和onActivityCreate之间的区别(转)的更多相关文章

  1. Statement和PreparedStatement之间的区别

    Statement和PreparedStatement之间的区别: 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2.使用 Statement ...

  2. MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)

    MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...

  3. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

  4. 你真的会玩SQL吗?EXISTS和IN之间的区别

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  5. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  6. iOS中assign,copy,retain之间的区别以及weak和strong的区别

    @property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Refe ...

  7. javascrip中parentNode和offsetParent之间的区别

    首先是 parentNode 属性,这个属性好理解,就是在 DOM 层次结构定义的上下级关系,如果元素A包含元素B,那么元素B就可以通过 parentElement 属性来获取元素A. 要明白 off ...

  8. 面试问题5:const 与 define 宏定义之间的区别

    问题描述:const 与 define 宏定义之间的区别 (1) 编译器处理方式不同     define宏是在预处理阶段展开:     const常量是编译运行阶段使用: (2) 类型和安全检查不同 ...

  9. 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别

       html css <div class="register-wrapper"> <div class="register"> &l ...

随机推荐

  1. JQ插入节点方法

    1.append()  appendTo()  prepend() prependTo() 2. before() insertBefore() after() insertAfter()

  2. log4j2日志xml配置——不同级别的日志分别记录在不同的文件

    <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL ...

  3. Kubernetes之Controllers二

      Deployments A Deployment controller provides declarative updates for Pods and ReplicaSets. You des ...

  4. maven web项目生成WebContent或WebRoot目录

    本文为博主原创,转载请注明出处: 新建maven web工程时,自动生成的文件结构目录如下: 这个是maven web自动生成的目录结构,我想让其生成如java web工程的WebRoot 或WebC ...

  5. 5+ App开发打包指南

    HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...

  6. ajax 怎么重新加载页面

    $.ajax({ type:"post", url:url, data:{xxx:xx}, dataType: "json", success : functi ...

  7. STL——set

    (转) 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用 ...

  8. vue-router两种模式的区别

    参考文献:https://blog.csdn.net/lla520/article/details/77894985/ https://segmentfault.com/a/1190000015123 ...

  9. 如何在Vue项目中使用vw实现移动端适配(转)

    有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...

  10. java 虹软ArcFace 2.0,java SDK使用-进行人脸检测

    虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.html虹软ArcFace功能简介 人脸检测人脸跟踪人脸属性检测(性别.年龄)人脸三维角度检测人脸对比 ...