Android學習第七篇;Fragment的使用

總領;fragment是Google推崇的ui佈局方法。他的主要目的是在所有的android設備上通用一套ui,fragment可以自適應android pad,android電腦等android設備。方便編碼一次在所有的android設備上使用。

一,使用方法

1,新建一個類,並繼承android.support.v4.app.Fragment

2,將fragment加入佈局中的方法

        1),靜態方法。直接在佈局xml中引用

                

                  如上,只需要將android:name設置成自己定義的fragment即可

           2),動態方法。在運行中加入fragment

                   (1),首先建立一個裝載fragment的容器,即FragmentLayout,如下

                               

                      (2),在Activity中動態加載自定的fragment,如下

                                 


2,替換fragment,新建另一個fragment類,注意,該方法需要寫在繼承了FragmentActivity的Activity中,目的是獲得getSupportFragmentManager()方法。具體有兩種方法,如下。

1),該方法每次重新創建fragment,消耗資源

2),該方法利用之前的fragment,節約了資源,提倡使用

private void replaceFragment2(){
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    //獲取事務
    switch (isWhich){
        case 1:
            if (headFragment==null){
                headFragment=new HeadFragment();
                fragmentTransaction.add(R.id.frlContainer,headFragment);
            }
            fragmentTransaction.hide(articleFragment);
            fragmentTransaction.show(headFragment);
            //替換
            isWhich=isHead;
            break;
        case 2:
            if (articleFragment==null){
                articleFragment=new ArticleFragment();
                fragmentTransaction.add(R.id.frlContainer,articleFragment);
            }
            fragmentTransaction.hide(headFragment);
            fragmentTransaction.show(articleFragment);
            //替換
            isWhich=isHead;
            break;
    }

    fragmentTransaction.commit();
    //提交事務
}

3,fragment和activity通信

       1),在fragment中暴露一個接口供activity使用。

           

        2),在activity中實現該接口。


     3),在fragment中獲取activity對象


     4),在fragment中調用接口的方法。

        在該方法中設置了button的事件監聽,當接收到點擊事件之後,會調用接口的sendData方法。而此時的接口其實是activity的引用。即這就是多態的一種表現形式。

二,問題及解決

1,

紅線報錯是因爲firstFragment繼承的是android.app.Fragment,而我們此處的add方法需要傳入android.support.v4.app.Fragment,所以修改firstFragment繼承的類即可。

三,源代碼

https://gitlab.com/MyAndroidProject/MyFragment


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章