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