亲爱的开发人员,
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()");
}
My Fragment的onCreate()有一个Sysout.println()用于测试目的,以查看它的确切执行时间。令我惊讶的是:为什么在调用片段的onCreate()之前,Activity的onCreate首先完成执行?会发生的是上面代码中显示的Sysout.println实际上是在我的Fragment的onCreate()中的另一个Sysout.println之前执行的。我希望在我通过片段事务将它添加到Activity之前执行Fragment的onCreate()。这是应该的方式吗?或者我在docs中读到的问题是commit()方法不立即执行但是只将片段事务放在队列中?
我想要达到的目的是:
所以这三个步骤:用数据初始化片段,将片段附加到活动,从片段的数据创建活动中的适配器。我的问题:这些事件应该在哪些方法中发生,以确保正确的执行顺序?
非常感谢!
答案 0 :(得分:0)
来自Android FragmentTransaction.Commit()
docs:
计划此交易的提交。提交不会发生 立即;它将被安排为主线程上的工作 下次线程准备就绪时完成。
如果您希望立即处理您的交易,请从您的UI线程中调用FragmentManager.ExecutePendingTransactions()
。