Fragment的getActivity怎么初始化的
很好奇什么时候能够拿到activity, 所以今天分析一下源码.
mHost
@Nullable
final public FragmentActivity getActivity() {
return mHost == null ? null : (FragmentActivity) mHost.getActivity();
}
很明显, 这里是通过mHost拿到的activity, 所以我们看mHost在哪里初始化的.
直接找mHost的赋值的地方
- 找FragmentManagerImpl找到FragmentHostCallback mHost;
- attachController传了host
- attachHost(@Nullable Fragment parent)
- FragmentActivity的onCreate中调用的mFragments.attachHost(null /parent/);
原来是Activity的onCreate创建的host