今天在使用
mFragmentManager.beginTransaction() .replace(R.id.articles_container, mArticleFragment) .commit();
对fragment进行操作的时候想看看源码的具体过程,就翻了一下。
首先v4的fragmentmanager:
mFragmentManager = getSupportFragmentManager();获取的并非是fragmentmanager,通过源码可以看到。由于FragmentManager是抽象类,上面方法返回的是FragmentManager内部的 一个final FragmentManagerImpl类
如图:
调用的beginTransaction方法,也是该实现类中的方法(如上图)查看源码:下图
可以看到该类继承了FragmentTransaction。
replace方法返回的this即BackStackRecord,最后是执行该类的commit方法。