亲爱的开发者,
Fragment 的 onCreate() 方法和 Activity 方法之间的关系对我来说还不是很清楚。我正在将一个片段附加到这样的活动中。
//happens in the Activity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fragMan = this.getSupportFragmentManager();
Fragment dataModelFragment = fragMan.findFragmentByTag("data_model");
if (dataModelFragment == null) {
dataModelFragment = new DataModelFragment();
fragMan.beginTransaction().add(dataModelFragment,"data_model").commit();
}
System.out.println("Executing Activity.onCreate()");
}
我的 Fragment 的 onCreate() 有一个 Sysout.println() 用于测试目的,以查看它何时执行。让我感到奇怪的是:为什么 Activity 的 onCreate 会在调用 Fragment 的 onCreate() 之前先完成执行?发生的情况是,上面代码中显示的 Sysout.println 实际上在另一个 Sysout.println 之前执行,它位于我的 Fragment 的 onCreate() 中。我希望在通过片段事务将片段添加到活动之前执行片段的 onCreate()。这是它应该工作的方式吗?还是我在文档中读到的问题是 commit() 方法不会立即执行,而是仅将片段事务放在队列中?
我想要实现的是:
- 我使用 Fragment 的单例实例作为要在活动生命周期中保留的数据模型。
- 我想将此片段添加到活动中,然后让此片段执行其初始化(创建数据库连接并将数据加载到其数据成员中)
- 最后,片段中的这些数据应该与 Activity 视图中的 AdapterViews 一起使用。
所以这三个步骤:用数据初始化片段,将片段附加到活动,从片段的数据在活动中创建适配器。我的问题:这些事件应该以哪些方法发生以确保正确的执行顺序?
非常感谢!