亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android Developers Training】 20. 創(chuàng)建一個(gè)

系統(tǒng) 2407 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛(ài)安卓而產(chǎn)生了翻譯的念頭,純屬個(gè)人興趣愛(ài)好。

原文鏈接: http://developer.android.com/training/basics/fragments/creating.html


你可以把一個(gè)fragment看成是一個(gè)activity的模塊,有著自己的生命周期,接收自己的時(shí)間輸入,你可以在activity的運(yùn)行階段添加或者移除fragment(某種意義上說(shuō),像是你可以在不同activity中重用的子activity)。這堂課將會(huì)展示如何通過(guò)使用 Support Library 來(lái)繼承 Fragment 類,這樣一來(lái),你的應(yīng)用就能與Android 1.6及以上的設(shè)備兼容了。

Note:

如果你決定你的應(yīng)用僅支持API Level 11及以上的系統(tǒng),那么你無(wú)需使用 Support Library ,可以使用框架中內(nèi)置的 Fragment 類和與它相關(guān)的APIs。不過(guò)要注意這堂課關(guān)注的是使用 Support Library 中提供的API,它和平臺(tái)中內(nèi)置的 Fragment 類相比,區(qū)別在于兩者的包簽名不同,有時(shí)候還有一些接口名字上的差異。

在你開(kāi)始學(xué)習(xí)這節(jié)課之前,你必須合理配置你的Android項(xiàng)目來(lái)使用 Support Library。如果在此之前你沒(méi)有使用過(guò) Support Library,那么按照 Support Library Setup 這一文檔的步驟,配置你的項(xiàng)目來(lái)使用 v4 庫(kù)。然而,你也可以使用“ v7應(yīng)用兼容庫(kù)( v7 appcompat library ”使你的activities包含 action bar ,此時(shí)你的應(yīng)用將兼容Android 2.1(API Level 7)及以上的系統(tǒng),同時(shí)也包含了 Fragment 的APIs。

?

一). 創(chuàng)建一個(gè)Fragment類

為了創(chuàng)建一個(gè)fragment,繼承 Fragment 類,之后覆寫核心生命周期函數(shù)來(lái)插入你的應(yīng)用邏輯,這和你處理 Activity 類的方法很相似。

當(dāng)創(chuàng)建一個(gè) Fragment 時(shí),有一點(diǎn)不同的地方是:你必須使用 onCreateView() 回調(diào)函數(shù)來(lái)定義它的布局。事實(shí)上,這是唯一一個(gè)為了使一個(gè) fragment 運(yùn)行所需要的回調(diào)函數(shù)。下面是一個(gè)簡(jiǎn)單的例子:

      
        import
      
      
         android.os.Bundle;


      
      
        import
      
      
         android.support.v4.app.Fragment;


      
      
        import
      
      
         android.view.LayoutInflater;


      
      
        import
      
      
         android.view.ViewGroup;




      
      
        public
      
      
        class
      
       ArticleFragment 
      
        extends
      
      
         Fragment {

    @Override

    
      
      
        public
      
      
         View onCreateView(LayoutInflater inflater, ViewGroup container,

        Bundle savedInstanceState) {

        
      
      
        //
      
      
         Inflate the layout for this fragment
      
      
        return
      
       inflater.inflate(R.layout.article_view, container, 
      
        false
      
      
        );

    }

}
      
    

像activity一樣,一個(gè)fragment需要實(shí)現(xiàn)其他的生命周期函數(shù),這允許你去管理它的狀態(tài)(從activity添加或移除時(shí),或者activity自身聲明周期狀態(tài)發(fā)生轉(zhuǎn)變時(shí))。例如,當(dāng)activity調(diào)用了 onPause() 方法,所有activity中的fragment也將調(diào)用 onPause() 方法。

可以閱讀 Fragments 獲取更多關(guān)于fragment生命周期和回調(diào)函數(shù)的知識(shí)。

?

二). 使用XML將Fragment添加至一個(gè)Activity

盡管fragments是可重用、模塊化的UI組件,每個(gè)fragment的實(shí)例必須和一個(gè)父 FragmentActivity 關(guān)聯(lián)。你可以通過(guò)在activity的XML布局文件中定義每一個(gè)fragment來(lái)實(shí)現(xiàn)這種關(guān)聯(lián)。

Note:

FragmentActivity 是一個(gè)由 Support Library 提供的 特殊 activity,用來(lái)處理早于API Level 11系統(tǒng)中的fragment。如果你所支持的系統(tǒng)版本高于API Level 11,那么你可以直接用常規(guī)的 Activity

下面是一個(gè)布局文件的例子,它向一個(gè)activity添加了兩個(gè)fragment,前提是設(shè)備屏幕可認(rèn)為是“大( large )”的(通過(guò)在目錄名后面添加“ large ”適配符)。

res/layout-large/news_articles.xml

      
        <
      
      
        LinearLayout 
      
      
        xmlns:android
      
      
        ="http://schemas.android.com/apk/res/android"
      
      
        

    android:orientation
      
      
        ="horizontal"
      
      
        

    android:layout_width
      
      
        ="fill_parent"
      
      
        

    android:layout_height
      
      
        ="fill_parent"
      
      
        >
      
      
        <
      
      
        fragment 
      
      
        android:name
      
      
        ="com.example.android.fragments.HeadlinesFragment"
      
      
        

              android:id
      
      
        ="@+id/headlines_fragment"
      
      
        

              android:layout_weight
      
      
        ="1"
      
      
        

              android:layout_width
      
      
        ="0dp"
      
      
        

              android:layout_height
      
      
        ="match_parent"
      
      
        />
      
      
        <
      
      
        fragment 
      
      
        android:name
      
      
        ="com.example.android.fragments.ArticleFragment"
      
      
        

              android:id
      
      
        ="@+id/article_fragment"
      
      
        

              android:layout_weight
      
      
        ="2"
      
      
        

              android:layout_width
      
      
        ="0dp"
      
      
        

              android:layout_height
      
      
        ="match_parent"
      
      
        />
      
      
        </
      
      
        LinearLayout
      
      
        >
      
    

Tip:

關(guān)于更多為不同屏幕尺寸創(chuàng)建布局的知識(shí),可以閱讀: Supporting Different Screen Sizes

之后將布局應(yīng)用到你的activity當(dāng)中:

      
        import
      
      
         android.os.Bundle;


      
      
        import
      
      
         android.support.v4.app.FragmentActivity;




      
      
        public
      
      
        class
      
       MainActivity 
      
        extends
      
      
         FragmentActivity {

    @Override

    
      
      
        public
      
      
        void
      
      
         onCreate(Bundle savedInstanceState) {

        
      
      
        super
      
      
        .onCreate(savedInstanceState);

        setContentView(R.layout.news_articles);

    }

}
      
    

如果使用的是 v7 appcompat library ,你的activity應(yīng)該繼承 ActionBarActivity ,它是 FragmentActivity 的子類。 更多信息可以閱讀: Adding the Action Bar (博客鏈接: http://www.cnblogs.com/jdneo/p/3440367.html )。

Note:

當(dāng)你通過(guò)將fragment在XML布局文件中定義的方式把fragment添加到activity中,你不能再運(yùn)行時(shí)移除這個(gè)fragment。如果你計(jì)劃在用戶交互過(guò)程中可以吧fragment換入或換出,你必須在activity第一次啟動(dòng)的時(shí)候把這個(gè)fragment添加到activity中,這是下節(jié)課將會(huì)展示的內(nèi)容。

【Android Developers Training】 20. 創(chuàng)建一個(gè)Fragment


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久福利资源网站免费看 | 日日操夜夜操狠狠操 | 国产精品社区在线观看 | 亚洲国产天堂久久综合9999 | 天天干天天综合 | 亚洲国产字幕 | 午夜二级 | www.一区二区三区 | 免费观看一级特黄欧美大片 | 色老头久久久久久久久久 | 精品91视频 | 久久精品久久精品久久 | 四虎影院最新网站 | 91久久综合 | h片在线观看网站 | 最新亚洲情黄在线网站 | 欧美一级视频免费 | 99热这里只有精品一区二 | 天天色色网 | 免费看片aⅴ免费大片 | 久久久精品久久久久久 | 在线看一区 | 国产网红精品 | 全毛片 | 欧美另类jizzhd| 97综合视频 | 一区二区高清视频 | 亚洲自拍小视频 | 日日摸夜夜爽夜夜爽出水 | 天天干天天添 | 国内精品视频在线播放一区 | 国产精品九九九久久九九 | 99在线免费观看视频 | 老司机午夜在线视频 | 性大交 | 国产精品四虎在线观看免费 | 亚洲综合啪啪 | 欧美真人视频一级毛片 | 亚洲精品国产成人7777 | 久草在在线视频免费 | 香蕉视频在线观看网站 |