美文网首页
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