- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Google 架构组件和 LiveData
之前,我没有关注过 onActivityCreated()
回调。我在 SOF 以及文档中读到了这一点,但我仍然无法理解这种行为。
摘自 SOF 答案之一:
As the name states, this is called after the Activity's onCreate() hascompleted.
在什么情况下onActivityCreated()
被调用以及什么时候onActivityCreated()
不被调用?
是否有可能调用了 onCreateView()
但未调用 onActivityCreated()
?
在onActivityCreated()
中附加LiveData
观察者是常见的做法,所以我猜onActivityCreated()
和之间存在显着差异>onCreateView()
?
尽管从官方 Android 文档中查看图表,似乎 onActivityCreated()
在 onCreateView()
之后被调用 always(就以下而言)执行,而不是顺序)没有区别吗?
这里有些令人困惑的事情。
更新:onActivityCreated()
已弃用。
最佳答案
编辑:根据 Ian Lake 在 Twitter 上的说法(参见 https://twitter.com/ianhlake/status/1193964829519667202 ),事实上 FragmentActivity
尝试发送onActivityCreated
在onStart
无关紧要,因为无论发生什么,FragmentManager 在从 onCreate
开始时都会调度它。至onStart
.
case Fragment.CREATED:
// We want to unconditionally run this anytime we do a moveToState that
// moves the Fragment above INITIALIZING, including cases such as when
// we move from CREATED => CREATED as part of the case fall through above.
if (newState > Fragment.INITIALIZING) {
fragmentStateManager.ensureInflatedView();
}
if (newState > Fragment.CREATED) {
fragmentStateManager.createView(mContainer);
fragmentStateManager.activityCreated(); // <--
fragmentStateManager.restoreViewState();
所以我下面说的其实是错误的。
显然使用onActivityCreated
在 Fragment 内相当于使用 onViewCreated
.
但这也意味着您不应该依赖 onActivityCreated
了解您的 Activity 是否实际创建,因为它被调用的次数比 Activity 实际创建时的调用次数要多。
fragment 令人困惑。
<小时/><小时/>原始答案:
Is it possible that onCreateView() called but onActivityCreated() not called?
更新:不,这是不可能的。
原文:是的,在FragmentPagerAdapter
中他们使用FragmentTransaction.detach
/FragmentTransaction.attach
,这会导致 View 被销毁,但 Fragment 仍保持 Activity 状态(已停止,但未销毁)。
在本例中,.attach()
运行onCreateView
,但不是onActivityCreated
.
It's common practice to attach LiveData observers in onActivityCreated(), so i guess there are significant difference between onActivityCreated() and onCreateView()?
更新:没关系,尽管 onViewCreated
还是比较清楚。
原文:这实际上是一种不好的做法,应该在onViewCreated
中完成,提供getViewLifecycleOwner()
作为生命周期所有者。
Although looking on the diagram from official Android docs seems like it onActivityCreated() is called always after onCreateView() and there no diffrence?
更新:尽管 FragmentActivity
只尝试分派(dispatch)一次,所有 fragment 总是经过 onActivityCreated
,因为这就是 FragmentManager 的工作原理。
原文:它并不总是在 onCreateView
之后调用。 ,事实上,它更确切地说是“在 onStart
之前,但仅一次”。
/**
* Dispatch onStart() to all fragments.
*/
@Override
protected void onStart() {
super.onStart();
mStopped = false;
if (!mCreated) {
mCreated = true;
mFragments.dispatchActivityCreated(); // <---
}
mFragments.noteStateNotSaved();
mFragments.execPendingActions();
// NOTE: HC onStart goes here.
mFragments.dispatchStart();
}
更新:但显然这对 FragmentManager 来说并不重要,因为它是 CREATED -> ACTIVITY_CREATED -> STARTED
无论哪种方式。
关于android - 当 Fragment onActivityCreated 调用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737773/
查看https://github.com/xxv/android-lifecycle 的优秀图表它说 onActivityCreated() 不会在 fragment 重启时调用。 我对此表示怀疑:
我正在尝试调用notifyDataSetChanged()从 MainActivity 中的 Fragment 中的适配器上,以便在更改数据后刷新 View /列表。我在 OnActivityCrea
我创建的 fragment 取决于其父 Activity 的一些属性。我浏览了 Fragment Life cycle文件。我需要将 Activity 的副本存储在一个变量中,以便以后可以访问它。有两
我有一个处理 fragment 和 ViewPager 的应用程序。我在 ViewPager 中有三个 fragment 。当您在它们之间切换时,它总是会导致其他两个 fragment 调用它们的 o
我正在膨胀 onCreateView() 中的布局我的 fragment 。此布局包含自定义 View 。现在documentation的 onActivityCreated()说它是“在创建 fra
在我的代码中,我在 onCreateView() 之后加载图片很不方便因为我不确定该 Activity 是否可用。因为 Glide 需要一个 Activity 上下文,所以我把这段代码放到了 onAc
Google 在 Android 上弃用 Fragment 的 onActivityCreated() 并推荐使用 LifeCycleObserver: To get a callback spec
在 Google 架构组件和 LiveData 之前,我没有关注过 onActivityCreated() 回调。我在 SOF 以及文档中读到了这一点,但我仍然无法理解这种行为。 摘自 SOF 答案之
我想在数据库 Firebase 中的值(“状态”)发生变化时启动新 Activity 。但我有问题,因为 onActivityCreated 启动了三次(因为我的监听器的 onDataChange 被
我在看 Fragment's Lifecycle here但看不到onActivityCreated被调用? 最佳答案 来自文档 docs : Called when the fragment's a
我在 ViewPager 中有几个 fragment ,我发现 fragment 的 onActivityCreated 和 onCreateView 都在我预期之前在页面上被调用。 例如,当 Vie
我有一个 listFragment 这是我的 onActivityCreated: @Override public void onActivityCreated(Bundle savedInstan
我知道 fragment 的 View 层次结构必须在 onCreateView 中膨胀,但是 onCreateView 中可以有哪些其他功能与应该等待 onActivityCreated 什么?我当
我正在阅读以下内容tutorial其中作者展示了如何使用 fragment 实现选项卡界面。在设置列表适配器之前,每个 fragment 都会对父 Activity 进行空检查,如下所示: publi
我遇到了一个我无法诊断的奇怪 NPE。我知道它来自引用我的 ProgressBar 微调器,但我不知道为什么,因为我在 fragment 的 onCreateView 中实例化它。 下面是我的 fra
我正在处理 fragment 并将新 fragment 推送到后台堆栈,但是当我将设备旋转两次时, fragment 的 onCreateView、onActivityCreated 等等在 frag
我正在使用 Android 4.0 ICS 和 Fragments 开发应用程序。 考虑这个来自 ICS 4.0.3(API 级别 15)API 的演示示例应用程序的修改示例: public clas
by this answer 我不明白我的 onClickListener() 放在哪里- 内部 onCreateView()或在 onActivityCreated() 内,下面的代码更好地描述了它
我有2个 Activity ,一个是Splash Activity,第二个是MainActivity 我在 MainActivity 中有 3 个 fragment 。 用法:当用户第一次或任何时候打
我想使用以下代码向我的应用程序添加一个 adFragment: public class AdFragment extends ActionBarActivity { public View
我是一名优秀的程序员,十分优秀!