Fragment的基本使用

本來是打算一周至少寫兩篇博客的但汞,但是這周無奈亂七八糟的事兒太多宿刮,今天總算是找了個時間來寫一篇博客。就記錄下平時沒怎用的Fragment的使用吧私蕾。作為一個菜鳥級的android開發(fā)僵缺,在目前做的實(shí)驗(yàn)室的項(xiàng)目都比較小,為了簡單就統(tǒng)統(tǒng)只使用Activity踩叭,F(xiàn)ragment基本上沒有用過磕潮,所以寫了這篇文章記錄下學(xué)習(xí)過程翠胰,熟悉鞏固一下它的用法。

什么是Fragment

Fragment,簡單的中文翻譯就是碎片的意思自脯,在進(jìn)一步說就是UI當(dāng)中的碎片之景。就我自己的理解其實(shí)就相對于是一個小型的Activity,因?yàn)樵贏ctivity中能夠?qū)崿F(xiàn)的東西它也可以膏潮,但是它必須存在于一個Activity中锻狗。Fragment最開始出現(xiàn)的時候主要應(yīng)用于平板系統(tǒng)中,因?yàn)槠桨宓钠聊槐容^大焕参,如果一個界面都用activity加載的一個布局去展示的話轻纪,一方面是會不好看,浪費(fèi)空間叠纷,另一方面也不方便管理維護(hù)刻帚。所以將界面分成幾個小的部分,而每個部分就是一個fragment涩嚣,因此在我看來fragment就是一個小型的activity我擂。

既然Fragment是一個小型的Activity,那他應(yīng)該也有生命周期了缓艳,也存在一個create到resume到destroy的過程校摩,關(guān)于它的生命周期以及與Activity生命周期的關(guān)系,在這里先就不說了阶淘,網(wǎng)上的資料一大堆衙吩,以后有時間的話也會來補(bǔ)充上

Fragment的使用

fragment的使用主要分為兩個部分,第一個如何去創(chuàng)建一個fragment溪窒,第二個如何把fragment放在activity中

1.如何創(chuàng)建一個fragment

上面說了fragment就是一個小的activity坤塞,所以它的創(chuàng)建過程其實(shí)和activity相似,首先新建一個布局文件澈蚌,假設(shè)創(chuàng)建了一個fragment_layout.xml文件摹芙,然后新建一個MyFragment類文件,讓該類繼承Fragment類(一般選擇support-v4包中的Fragment宛瞄,因?yàn)榧嫒菪詮?qiáng)),接下來就可以像activity去加載布局xml文件一下重寫onCreateView方法去加載布局浮禾,如下所示:

 @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_layout,container,false);
        return view;
    }

到這一步就成功創(chuàng)建了一個自定義的Fragment,就是這么easy

2. 如何把Fragment添加到Activity中

因?yàn)閒ragment必須存在activity中份汗,所以創(chuàng)建了一個activity中還沒辦法將它展現(xiàn)出來盈电,必須添加到相應(yīng)的activity中。而這一過程有兩種方式杯活,包括靜態(tài)添加和動態(tài)添加

靜態(tài)添加

靜態(tài)添加就是在activity對應(yīng)要加載的布局xml布局文件中通過fragment標(biāo)簽直接把fragment引入在相應(yīng)位置匆帚。如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   <fragment
        android:id="@+id/my_fragment"
        android:name="com.example.tu.fragmenttest.MyFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

這樣當(dāng)該布局xml對應(yīng)的activity可見的時候,MyFragment就會展示出來旁钧,所以這種方式也很easy

動態(tài)添加

所謂的動態(tài)添加就是在Activity啟動之后動態(tài)加入吸重。這種方式比起前面的靜態(tài)方式稍微復(fù)雜一點(diǎn)點(diǎn)互拾,但是這種方式更實(shí)用,因?yàn)檫@樣可以隨時控制activity的添加嚎幸,替換摩幔,刪除等動作。
動態(tài)添加方式需要首先在布局xml文件中用ViewGroup控件給fragment預(yù)留一個位置鞭铆,然后就需要借助FragmentManager來將fragment放置到該位置中,動態(tài)添加的步驟為:

  1. 創(chuàng)建自定義Fragment的實(shí)例焦影,即new一個自定義的Fragment车遂;
  2. 獲取FragmentManager的實(shí)例,一般可直接通過getFragmentManager獲取到斯辰,若是使用的support-v4包下的Fragment舶担,則需要通過getSupportFragmentManager獲取彬呻;
  3. 通過FragmentManager實(shí)例的beginTransaction方法開啟得到FragmentTranscation的實(shí)例衣陶,即開啟一個事務(wù)(注意FragmentTranscation的實(shí)例只能使用一次,后續(xù)有需要動態(tài)操作fragment的時候則需要重新開啟一個新的實(shí)例)闸氮;
  4. 事務(wù)提供了add方法剪况,可將fragment添加進(jìn)來,add方法接收兩個參數(shù)蒲跨,第一個參數(shù)是需要放置的布局id译断,第二個參數(shù)則是上面new出來的fragment實(shí)例。類似的事務(wù)還提供了replace或悲,remove等方法都是用來動態(tài)操作fragment的孙咪;
  5. 上面的事務(wù)將所要完成的工作都準(zhǔn)備好了,最后的工作就是將這個事務(wù)提交即調(diào)用commit()方法巡语,以實(shí)現(xiàn)效果翎蹈。

Example

MyFragment myFragment = new MyFragment();
FragmentManager mfragmentManger = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = mfragmentManger.beginTransaction();
fragmentTransaction.add(R.id.fragment_frame,myFragment);
fragmentTransaction.commit();

總結(jié)

本文目前只是對Fragment最基本的使用方法做了一個簡單的介紹,后面還會針對fragment的使用細(xì)節(jié)等進(jìn)行補(bǔ)充男公,也會記錄一些Fragment的應(yīng)用荤堪,比如類似微信app底部的導(dǎo)航欄。
菜鳥一枚枢赔,寫的不好逞力,還在努力進(jìn)步中,如果有任何建議歡迎提出

2017 4.1 23:58
806實(shí)驗(yàn)室

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糠爬,一起剝皮案震驚了整個濱河市寇荧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌执隧,老刑警劉巖揩抡,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件户侥,死亡現(xiàn)場離奇詭異,居然都是意外死亡峦嗤,警方通過查閱死者的電腦和手機(jī)蕊唐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烁设,“玉大人替梨,你說我怎么就攤上這事∽昂冢” “怎么了副瀑?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恋谭。 經(jīng)常有香客問我糠睡,道長,這世上最難降的妖魔是什么疚颊? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任狈孔,我火速辦了婚禮,結(jié)果婚禮上材义,老公的妹妹穿的比我還像新娘均抽。我一直安慰自己,他們只是感情好其掂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布到忽。 她就那樣靜靜地躺著,像睡著了一般清寇。 火紅的嫁衣襯著肌膚如雪喘漏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天华烟,我揣著相機(jī)與錄音翩迈,去河邊找鬼。 笑死盔夜,一個胖子當(dāng)著我的面吹牛负饲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喂链,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼返十,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椭微?” 一聲冷哼從身側(cè)響起洞坑,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝇率,沒想到半個月后迟杂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刽沾,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年排拷,在試婚紗的時候發(fā)現(xiàn)自己被綠了侧漓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡监氢,死狀恐怖布蔗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浪腐,我是刑警寧澤纵揍,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站牛欢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏淆游。R本人自食惡果不足惜傍睹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犹菱。 院中可真熱鬧拾稳,春花似錦、人聲如沸腊脱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陕凹。三九已至悍抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杜耙,已是汗流浹背搜骡。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佑女,地道東北人记靡。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像团驱,于是被迫代替她去往敵國和親摸吠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容