Fragment的初級使用手記

這只是我在學Android過程中對于所學知識的鞏固和方便日后查詢的學習筆記往枷,能幫助到有需要的和我一樣的初學者就更好了

強烈建議使用V4庫中的Fragment來達到更好的兼容性

使用時只需新建MyFragment繼承Fragment而昨,并重寫View onCreateView()來動態(tài)加載即可

首先

<fragment
android:id="......"
android:name="......"
//也就是MyFragment(完整包名+類名,類似:com.example.Test.MyFragment)
......
/>

其次

public class MyFragment extends Fragment{
    @override
    public View onCreateView(LayoutInflater inflater ,ViewGroup container ,Bundle savedInstanceState){
        View view=inflater.inflate(R.layout. ... ,container,false);
        return view;
    }//Fragment中的UI控件也加在與此方法中
}

就這么簡單

Fragment的替換(配合FrameLayout)

要注意

Fragment的替換并不是兩個Fragment相互替換,而是去替換空白的FrameLayout

**<FrameLayout id="@+id/frame_layout" />
假設 有兩個id分別為fragment1璧针,fragment2的碎片

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    @override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.changefragmen);
        button.setonClickListener(this);
        replaceFragment(new Fragment1());
    }
    @override
    public void onClick(View v){
        switch (v.getId()){
            case R.id.changefragment:
                replaceFragment(new Fragment2());
                break;
            default:
                break;
        }
    }
    private void replaceFragment(Fragment fragment){
    //替換的相關代碼
        FragmentManager manager=getSupportFragmentManager();
        FragmentTransaction transaction=manager.beginTransaction();
        transaction.replace(R.id.frame_layout ,fragment);//后者替換前者
        //可以看出并非fragment2替換了fragment1
        //而是代替了fragment1去替換frame_layout
        transaction.commit();
    }
}

與Activity的通信

引用了Fragment的Activity中獲取Fragment實例

MyFragment fragment=(MyFragment)getSupportManager().findFragmentById(R.id.fragment);

Fragment要使用Context對象時getActivity()即可
Fragment中獲取Activity對象

MainActivity activity=(MainActivity)getActivity();

Fragment間通信

先獲取另一碎片所屬活動的實例再由上面方法即可獲取碎片實例

生命周期

onAttach() onCreate() onCreateView() onActivityCreated
onStart() onResume() onPause() onStop()
onDestroyView() onDestroy() onDetach()

注意事項

1、fragment是可以加入返回桟的從而達到back鍵回到替換前的fragment而不是退出應用
只需在 transaction.commit();前addToBackStack(null);


.......
transaction.addToBackStack(null);//參數(shù)為一個用于描述返回棧狀態(tài)的名字
transaction.commit();

2疆股、很多時候一切設置妥當?shù)沁\行時報有關fragment的錯:
我遇到此問題時一般都是由于很少用到id锅必,所以<fragment >中沒有設置id這個屬性,設置后就正常了氢卡,別的問題還沒遇到
3锈至、引入Fragment時右側預覽總是報錯而且無法正常顯示Fragment,但是運行起來沒問題译秦,我也不知道原因

補充

有些情況下需要將繼承了SurfaceView的類加載于Fragment中峡捡,例如MySurfaceView击碗。加載至Activity中時

setonContentView(new MySurfaceView());

當時要加載到Fragment中時我卻不知該怎么辦,后來看Activity中的加載方法聯(lián)想到Fragment中和View有聯(lián)系的方法中加載是否可行们拙。
于是

public class MyFragment extends Fragment{
    @override
    public View onCreateView(LayoutInflater inflater ,ViewGroup container ,Bundle savedInstanceState){
        View view=new MySurfaceView();
        return view;
    }
}

發(fā)現(xiàn)可以達到預期效果

如有錯誤歡迎指正

結束

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末稍途,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砚婆,更是在濱河造成了極大的恐慌械拍,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件装盯,死亡現(xiàn)場離奇詭異坷虑,居然都是意外死亡,警方通過查閱死者的電腦和手機埂奈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門迄损,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人账磺,你說我怎么就攤上這事芹敌。” “怎么了绑谣?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵党窜,是天一觀的道長。 經常有香客問我借宵,道長幌衣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任壤玫,我火速辦了婚禮豁护,結果婚禮上,老公的妹妹穿的比我還像新娘欲间。我一直安慰自己楚里,他們只是感情好,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布猎贴。 她就那樣靜靜地躺著班缎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪她渴。 梳的紋絲不亂的頭發(fā)上达址,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機與錄音趁耗,去河邊找鬼沉唠。 笑死,一個胖子當著我的面吹牛苛败,可吹牛的內容都是我干的满葛。 我是一名探鬼主播径簿,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘀韧!你這毒婦竟也來了篇亭?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤锄贷,失蹤者是張志新(化名)和其女友劉穎暗赶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肃叶,經...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡蹂随,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了因惭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岳锁。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蹦魔,靈堂內的尸體忽然破棺而出激率,到底是詐尸還是另有隱情,我是刑警寧澤勿决,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布乒躺,位于F島的核電站,受9級特大地震影響低缩,放射性物質發(fā)生泄漏嘉冒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一咆繁、第九天 我趴在偏房一處隱蔽的房頂上張望讳推。 院中可真熱鬧,春花似錦玩般、人聲如沸银觅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽究驴。三九已至,卻和暖如春匀伏,著一層夾襖步出監(jiān)牢的瞬間洒忧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工帘撰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跑慕,地道東北人万皿。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓摧找,卻偏偏與公主長得像核行,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蹬耘,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,348評論 25 707
  • Fragment 描述: ??翻譯可以譯為:碎片芝雪、片段,Android 3.0開始引入fragments 的概念;...
    Lost_Robot閱讀 1,703評論 0 11
  • 前言 Fragment想必大家不陌生吧综苔,在日常開發(fā)中惩系,對于Fragment的使用也很頻繁,現(xiàn)在主流的APP中如筛,基本...
    斜杠時光閱讀 2,584評論 4 22
  • 想研究美圖的初衷在于其做為廈門目前最知名的互聯(lián)網公司之神秘(身為廈門人的我更為好奇)杨刨。 而且這2年其動作之頻繁: ...
    ElekChen閱讀 489評論 4 2
  • Android從KitKat(Android SDK 4.4, API Level 19)開始支持Java 7晤柄,但...
    Pery_Zen閱讀 4,414評論 0 2