FragmentTransaction.commit onCreateView没有立即执行

在做项目中,遇到一个很奇怪的问题 ,当调用fragmentTransaction.commit的时候 fragment的生命周期并没有立即执行,下面是我的代码

1
2
3
4
5
6
manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
MainFragment fragment = new MainFragment();
ft.add(R.id.fl_content, fragment);
ft.commit();
fragment.setInfo();

看似正常的逻辑没有问题 ,可是却fragment里面却给我报了NullPointException ,看log显示 view是null,我就奇怪了,明明onCreateView里面不是findViewById找到了嘛 ,不会啊,无意中查看了fragmentTransaction.commit()的源码才知道
注释是这样写的

* Schedules a commit of this transaction.  The commit does
* not happen immediately; it will be scheduled as work on the main thread
* to be done the next time that thread is ready.

大致的意思是说 调用commit后不会立即执行,会再下一次准备好的时候,运行在主线程里面。

解决办法

调用commit后执行
manager.executePendingTransactions();
这样就会立即执行了