天天看點

Fragment中加載問題以及LayoutInflater加載

Fragment的運用中的自己的了解

Fragment的加載是在某一個控件上面,運用FragmentManager()

FragmentManager.beginTransaction();得到一個事物,然後就可以通過這個事物控制顯示Fragment的顯示與隐藏。

Transaction中有四個方法即replace(),add(),show();和hide()四個方法,四個方法的運用要看具體運用到哪裡了。

replace();方法是将以前控件上面的Fragment全部去除,去除的Fragment會銷毀,自然就會調用他的生命周期方法了,然後将目前的Fragment add上去,add上去的Fragment也會執行他的建立的時候的生命周期。

add();方法是将目前的Fragment添加到控件上去,此時如果隻是添加,即一直add,那麼這個控件上面的Fragment會重疊顯示

show()和hide()方法就是為了add()方法服務的,既然上面有很多的Fragment();那麼就涉及到,哪一個顯示哪一個隐藏了,調用show();和hide()的時候不會調用Fragment的生命周期的任何方法。

再來說一下Fragment中的onCreateView方法

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

Log.i(“MainActivity+2”,container.getId()+”“);

View view = inflater.inflate(R.layout.fragment_frist,container,false);
    return view;
}
           

他是傳回一個View的,那麼裡面的container做什麼用的,

就要說到LayoutInflater的inflate方法的執行了

我們都知道他是加載布局檔案夾的,但是他有三個參數的和兩個參數的

隻能說這個方法很友善了,是以帶來了困擾

三個參數的:

第一個參數不用說,布局id

第二個參數是一個ViewGroup,這個的意思是,是否把布局檔案加入到這個viewGroup中

如果第三個參數是true,那麼就把這個布局檔案加載到viewGroup中,然後傳回的就是Viewgroup了,隻不過裡面包含了這個布局檔案

如果為false,不是吧這個布局檔案加載到viewGroup中,但是這個布局檔案會運用這個Viewgroup根屬性(典型應用就是adapter中的getview方法)

兩個參數的:

第二個參數為null的時候就是傳回這個布局檔案加載成的view

不為null,預設為三個參數的true

繼續閱讀