看了有关这个问题的几篇博文,几乎都是引用了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. Configuring Logstash

    Configuring Logstash To configure Logstash, you create a config file that specifies which plugins yo ...

  2. 【解决办法】Undefined command/function 'mapminmax'.

    原因: 低版本7.0中没有mapminmax这个函数,对应的归一化函数是premnmx和postmnmx,具体请查看着两个函数的用法升级到2009就肯定可以正常使用这个函数了 解释: premnmx. ...

  3. (zhuan) awesome-object-proposals

      awesome-object-proposals  A curated list of object proposals resources for object detection. This ...

  4. 基于 Python 和 Pandas 的数据分析(6) --- Joining and Merging

    这一节我们将看一下如何通过 join 和 merge 来合并 dataframe. import pandas as pd df1 = pd.DataFrame({'HPI':[80,85,88,85 ...

  5. _spellmod_on_learn、_spellmod_on_remove

    _spellmod_on_learn._spellmod_on_remove,这俩表分别控制学习技能和遗忘技能时调用的GM命令.例如你制作了一个技能,学习炼金术这个专业时给玩家,遗忘炼金术这个专业时同 ...

  6. R语言矩阵栅格显示矩阵颜色显示

    效果如下:

  7. MYSQL的基本函数 (数学函数)

    ABS(x)   返回x的绝对值 BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x)   返回大于x的最小整数值 EXP(x)   返回值e(自然对数的底) ...

  8. Codeforces 444 C - DZY Loves Colors

    C - DZY Loves Colors 思路: 分块,复杂度有点玄学,和普通分块不同的是在这个块被一次染色的时候暴力染整个块. 代码: #pragma GCC optimize(2) #pragma ...

  9. Error updating database:线程异常

    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: See http://www.slf4 ...

  10. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...