【发布时间】:2013-06-18 05:54:18
【问题描述】:
我读到如果我们需要立即创建片段,我们必须在FragmentManager 上调用executePendingTransactions() 方法。嗯,这就是我想要做的。像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.layout.fragmentContainer, new MyFragment);
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
foo(); // It is called before MyFragment's onCreateView()
}
我想知道为什么在MyFragment 的onCreateView() 之前调用foo() 方法。如您所见,我在 UI 线程中调用 executePendingTransactions() 是应该的。我根本不会在这里搞乱线程。
【问题讨论】:
-
你能附加一个布尔值来执行像
boolean val = fragmentManager.executePendingTransactions();这样的挂起的txns,看看在调试时调用foo后它会产生什么。 -
您好,请问有这个问题的消息吗?我面临同样的问题,无法找到解决方案。如果你已经解决了,可以分享一下解决方案吗?
-
@Haspemulator 不幸的是,我最终决定使用完全不同的方法。
-
我仍然对为什么它在 onStart 而不是 onCreate 中有效。有人吗?