在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Android碎片/片段
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢
Android AutoCompleteTextView(自動完成)實例
Android 資源組織和訪問
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過濾器
Android LinearLayout
Android登錄實例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動畫)實例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對話框)
Android圖片效果
Android內(nèi)部存儲
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍牙)實例
Android RelativeLayout
Android最佳實踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android碎片/片段

片段(Fragments)是一個應(yīng)用程序的用戶界面或行為活動,使活動更加模塊化設(shè)計,可以放置在一塊。一個片段是一種子活動。以下要點有關(guān)片段:

  • 片段都有自己的布局和規(guī)范自己的行為與生命周期回調(diào)。

  • 可以添加或刪除片段在活動而活動運行。

  • 可以將多個片段在一個單一的活動,建立一個多窗格UI。

  • 片段可用于多種活動。

  • 片段的生命周期是密切相關(guān),其主機活動的生命周期,表示當(dāng)活動暫停時,所有的片段也將停止活動。

  • 片段可以實現(xiàn)的行為當(dāng)沒有用戶界面組件。

  • 片段加入被加入到 Android API 在Honeycomb版本的Android(API版本11)。

創(chuàng)建片段可以擴展Fragment 類并在活動的布局文件中聲明片段,可以插入到活動布局的一個片段到<fragment>元素。

介紹片段之前,有一個限制,因為可以在一個特定的時間點,屏幕上只顯示單個活動。所以不能夠分割設(shè)備屏幕來分別控制不同部位。但隨著引進片段得到了更多的靈活性,并在屏幕上同一時時間可以將一個單一的活動取消限制?,F(xiàn)在有一個單一的acitivity ,但每個acitivity 可以包括多個片段,它們有自己的布局,活動和完整的生命周期。

下面是一個典型的例子,兩個UI模塊定義的片段可以組合成平板電腦的設(shè)計的一個活動,這里在手機中設(shè)計分離。

Android Fragment

應(yīng)用程序嵌入活動A中兩個片段,在一個平板大小的設(shè)備上運行。然而在手機大小的屏幕上,有兩個片段有足夠的空間,所以Activity A包括片段物品的清單,當(dāng)用戶選擇一篇文章時,它開始使用Activity B,包括閱讀第二片段的文章。 

片段生命周期

Android 的碎片有自己的生命周期,非常相似 Android 中的 Activity 。本節(jié)主要闡述其生命周期在不同階段。

階段 I: 當(dāng)被創(chuàng)建了一個片段,它通過以下狀態(tài):

  • onAttach()

  • onCreate()

  • onCreateView()

  • onActivityCreated()


階段 II: 當(dāng)片段變得可見,它通過這些狀態(tài):

  • onStart()

  • onResume()

階段 III: 當(dāng)碎片進入后臺模式,它通過這些狀態(tài):

  • onPaused()

  • onStop()

階段 IV: 當(dāng)片段被破壞,它通過以下狀態(tài):

  • onPaused()

  • onStop()

  • onDestroyView()

  • onDestroy()

  • onDetach()

Activity Fragment Lifecyle

如何使用碎片?

這里演示簡單的步驟來創(chuàng)建碎片:

  • 首先,要決定有多少碎片要在活動中要使用。例如,要使用兩個片段處理設(shè)備的橫向和縱向模式。

  • 在下一頁的碎片數(shù)量的基礎(chǔ)上,創(chuàng)建類將擴展 Fragment 類。上述片段類的回調(diào)函數(shù)??梢愿鶕?jù)要求覆蓋所有的功能。

  • 對應(yīng)每一個片段,需要在XML文件中創(chuàng)建布局。這些文件將根據(jù)布局來定義碎片。

  • 最后修改活動文件替換片段,根據(jù)需要來定義實際的邏輯。

這里是重要的 覆蓋在Fragment 類的方法,如下列表:

  • onCreate() 系統(tǒng)調(diào)用時創(chuàng)建片段。初始化片段要保留暫?;蛲V箷r的片段,然后恢復(fù)其它組成部分。

  • onCreateView() 當(dāng)片段第一次繪制用戶界面時,系統(tǒng)調(diào)用這個回調(diào)。要繪制一個UI為片段,必須返回一個 View 組件,此方法是片段的根布局。返回空片段不提供一個UI。

  • onPause() 系統(tǒng)調(diào)用此方法,作為第一次指示用戶離開此片段。這通常是提交更改操作,持久化時間超過當(dāng)前用戶會話時間。

例子

下面的這個例子將解釋如何創(chuàng)建片段 - Fragments。在這里將創(chuàng)建兩個片段并且當(dāng)其中一個使用的設(shè)備是在橫向模式下,另一個片段將被用在縱向模式下。按照下面的步驟類似于在前面創(chuàng)建的Hello World范例:

步驟 描述
1 使用Eclipse IDE創(chuàng)建Android應(yīng)用程序,并將其命名為MyFragments在一個包com.example.myfragments下 ,使用空活動。
2 主要活動文件MainActivity.java的代碼修改為如下。在這里將檢查設(shè)備的方向并在不同的片段之間進行切換。
3 在 com.example.myfragments包下創(chuàng)建兩個java文件PM_Fragment.java和LM_Fragement.java來定義片段以及相關(guān)方法。
4 創(chuàng)建布局文件 res/layout/lm_fragment.xml 并布局定義這兩個片段。
5 修改 res/layout/activity_main.xml 文件的默認(rèn)內(nèi)容,以包括兩個片段。
6 res/values/strings.xml文件中定義所需的常量
7 運行該應(yīng)用程序啟動 Android 模擬器來驗證應(yīng)用程序所做的修改結(jié)果。

以下是主要活動文件的內(nèi)容 src/com.example.mycontentprovider/MainActivity.java 修改

package com.example.myfragments;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.view.WindowManager;

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      Configuration config = getResources().getConfiguration();

      FragmentManager fragmentManager = getFragmentManager();
      FragmentTransaction fragmentTransaction = 
      fragmentManager.beginTransaction();

      /**
      * Check the device orientation and act accordingly
      */
      if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
         /**
         * Landscape mode of the device
         */
         LM_Fragment ls_fragment = new LM_Fragment();
         fragmentTransaction.replace(android.R.id.content, ls_fragment);
      }else{
         /**
         * Portrait mode of the device
         */
         PM_Fragment pm_fragment = new PM_Fragment();
         fragmentTransaction.replace(android.R.id.content, pm_fragment);
      }
      fragmentTransaction.commit();
   }
    
}

創(chuàng)建兩個的片段文件LM_Fragement.java 和 PM_Fragment.java在com.example.mycontentprovider 包下。

以下是LM_Fragement.java文件的內(nèi)容 :

package com.example.myfragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class LM_Fragment extends Fragment{
   @Override
   public View onCreateView(LayoutInflater inflater,
      ViewGroup container, Bundle savedInstanceState) {
      /**
       * Inflate the layout for this fragment
       */
      return inflater.inflate(
      R.layout.lm_fragment, container, false);
   }
}

下面是 PM_Fragement.java 文件的內(nèi)容:

package com.example.myfragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.