片段在片段活动之前运行

4

有一个Fragment,它使用主要FragmentActivity的一些值。该Fragment是静态添加(XML)并在主FragmentActivity之前运行。

是否有一种方法可以修复Fragments的运行顺序(不包括动态样式)?

有一个规则: 如果Fragment应始终在Activity中,请使用XML进行静态添加,但如果更为复杂,请使用基于Java的方法。

我的Fragment始终在Activity中。但是,在片段运行之前,FragmentActivity必须接收常见的值/变量。

动态样式是唯一的方法吗?


你应该了解片段生命周期。 - Raghunandan
你是如何解决我的问题的?你建议我创建一个 onResume 的片段吗? - Idol
Fragment已附加到Activity。因此,在Activity之前,片段不会运行。请阅读http://developer.android.com/guide/components/fragments.html。然后您就可以解决您的问题了。 - Raghunandan
1个回答

3
简单来说,这是活动中片段的“生命周期”日志。
05-20 10:54:22.014: I/ActivityAndFragmentLifeCycle.java(6211): onCreate() Before setContentView() 
05-20 10:54:22.054: V/TestingFragment.java(6211): onAttach()
05-20 10:54:22.054: V/TestingFragment.java(6211): onCreate()
05-20 10:54:22.054: V/TestingFragment.java(6211): onCreateView() 
05-20 10:54:22.054: I/ActivityAndFragmentLifeCycle.java(6211): onCreate() After setContentView() 
05-20 10:54:22.064: V/TestingFragment.java(6211): onActivityCreated()
05-20 10:54:22.064: V/TestingFragment.java(6211): onStart()
05-20 10:54:22.064: I/ActivityAndFragmentLifeCycle.java(6211): onStart()
05-20 10:54:22.064: I/ActivityAndFragmentLifeCycle.java(6211): onResume()
05-20 10:54:22.064: V/TestingFragment.java(6211): onResume()
05-20 10:54:22.074: V/TestingFragment.java(6211): onPause()
05-20 10:54:22.074: I/ActivityAndFragmentLifeCycle.java(6211): onPause()

在这里,Activity的onCreate()首先被调用。 onCreate()的主要工作是填充视图。为此,调用了setContentView()。此时会调用Fragment的onCreateView()ActivityAndFragmentLifeCycle.java扩展了FragmentActivity,而TestingFragment.java则扩展了Fragment
最后,如果您希望在片段中保持活动变量的值,则需要在FragmentActivitysetContentView()之前初始化这些变量,或者您需要进行编程片段附加。

在调用setContentView()之前定义变量可以得到预期的结果。感谢你的帮助。 - Idol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接