美文网首页
android Fragment 里的getActivity生效

android Fragment 里的getActivity生效

作者: 白天才痴 | 来源:发表于2015-12-29 23:41 被阅读563次
FragmentActivity.java中
final FragmentController mFragments = FragmentController.createController(new HostCallbacks());

即在FragmentActiviy初始化的时候把自己包裹在FragmentHostCallback里传给了FragmentController
然后在其FragmentActiviy 的onStart函数中,

@Override
protected void onStart() {
    super.onStart();

    mStopped = false;
    mReallyStopped = false;
    mHandler.removeMessages(MSG_REALLY_STOPPED);

    if (!mCreated) {
        mCreated = true;
        mFragments.dispatchActivityCreated();
    }

    mFragments.noteStateNotSaved();
    mFragments.execPendingActions();//执行fragment的初始化操作

    mFragments.doLoaderStart();

    // NOTE: HC onStart goes here.

    mFragments.dispatchStart();
    mFragments.reportLoaderStart();
}

在FragmentManager中的

void moveToState(Fragment f, int newState, int transit, 
              int transitionStyle,   boolean keepActive) 

函数中,进行Fragment的状态切换,fragment的初始化,创建视图view等动作都在这里进行,同时为fragment.mHost赋值,到此为止fragment获取到了附属的activity实例。所以之后可以调用getActivity()获取该宿主。

其实时机就是Fragment调用onAttach的时候,但是看onAttach没有传入activity所以之前一直不能确定是在哪给赋值的。

相关文章

网友评论

      本文标题:android Fragment 里的getActivity生效

      本文链接:https://www.haomeiwen.com/subject/muzvhttx.html