最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android學(xué)習(xí)之Fragment

 更新時(shí)間:2016年01月14日 09:16:28   投稿:lijiao  
Fragment是什么?碎片(Fragment)是一種可以嵌入在活動(dòng)(activity)當(dāng)中的UI片段,想要了解碎片的簡(jiǎn)單用法的朋友可以參考一下

Fragment 是什么

碎片(Fragment)是一種可以嵌入在活動(dòng)(activity)當(dāng)中的 UI 片段。

一、碎片的簡(jiǎn)單用法

創(chuàng)建兩個(gè)布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <Button
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:text="Button"
      />
  </LinearLayout>
//left_fragment.xml
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00"
    android:orientation="vertical" >
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:textSize="20sp"
      android:text="This is right fragment"
      />
  </LinearLayout>

//right_fragment.xml

所有的自定義 Fragment 都需要繼承 Fragment 類:

public class LeftFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.left_fragment, container, false); return view;
  }
}
public class RightFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.right_fragment, container, false); return view;
  }
}

最后定義 activity_main.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <fragment
      android:id="@+id/left_fragment"
      android:name="com.example.fragmenttest.LeftFragment"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1" />
    <fragment
      android:id="@+id/right_fragment"
      android:name="com.example.fragmenttest.RightFragment"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1" />
  </LinearLayout>

二、動(dòng)態(tài)添加碎片

可以在代碼當(dāng)中動(dòng)態(tài)添加碎片:

@Override
    public void onClick(View v) {
      switch (v.getId()) {
      case R.id.button:
        AnotherRightFragment fragment = new AnotherRightFragment();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.
  beginTransaction();
        transaction.replace(R.id.right_layout, fragment);
        transaction.commit();
        break;
      default:
        break;
  } }

動(dòng)態(tài)添加碎片主要分為 5 步。

1、創(chuàng)建待添加的碎片實(shí)例。
2、獲取到 FragmentManager,在活動(dòng)中可以直接調(diào)用 getFragmentManager()方法得到。
3、開(kāi)啟一個(gè)事務(wù),通過(guò)調(diào)用 beginTransaction()方法開(kāi)啟。
4、向容器內(nèi)加入碎片,一般使用 replace()方法實(shí)現(xiàn),需要傳入容器的 id 和待添加的碎片實(shí)例。
5、提交事務(wù),調(diào)用 commit()方法來(lái)完成。

三、在碎片中模擬返回棧

通過(guò)點(diǎn)擊按鈕添加了一個(gè)碎片之后,這時(shí)按下 Back 鍵程序就會(huì)直接退出。

 public class MainActivity extends Activity implements OnClickListener {
......
    @Override
    public void onClick(View v) {
      switch (v.getId()) {
      case R.id.button:
        AnotherRightFragment fragment = new AnotherRightFragment();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.
  beginTransaction();
        transaction.replace(R.id.right_layout, fragment);
        transaction.addToBackStack(null);
        transaction.commit();
        break;
      default:
  break; }
  }
}

四、碎片和活動(dòng)之間進(jìn)行通信

為了方便碎片和活動(dòng)之間進(jìn)行通信,FragmentManager 提供了一個(gè)類似于 findViewById() 的方法,專門(mén)用于從布局文件中獲取碎片的實(shí)例,代碼如下所示:

  RightFragment rightFragment = (RightFragment) getFragmentManager()
      .findFragmentById(R.id.right_fragment);

在每個(gè)碎片中都可以通過(guò)調(diào)用getActivity() 方法來(lái)得到和當(dāng)前碎片相關(guān)聯(lián) 的活動(dòng)實(shí)例,代碼如下所示:

  MainActivity activity = (MainActivity) getActivity();

五、碎片的生命周期

運(yùn)行狀態(tài):當(dāng)一個(gè)碎片是可見(jiàn)的,并且它所關(guān)聯(lián)的活動(dòng)正處于運(yùn)行狀態(tài)時(shí),該碎片也處于運(yùn)行狀態(tài)。
暫停狀態(tài):當(dāng)一個(gè)活動(dòng)進(jìn)入暫停狀態(tài)時(shí)(由于另一個(gè)未占滿屏幕的活動(dòng)被添加到了棧頂),與它相關(guān)聯(lián)的可見(jiàn)碎片就會(huì)進(jìn)入到暫停狀態(tài)。
停止?fàn)顟B(tài):當(dāng)一個(gè)活動(dòng)進(jìn)入停止?fàn)顟B(tài)時(shí),與它相關(guān)聯(lián)的碎片就會(huì)進(jìn)入到停止?fàn)顟B(tài)。
銷毀狀態(tài):碎片總是依附于活動(dòng)而存在的,因此當(dāng)活動(dòng)被銷毀時(shí),與它相關(guān)聯(lián)的碎片就會(huì)進(jìn)入 到銷毀狀態(tài)。

下面是碎片的一些回調(diào)方法:

  • onAttach() 當(dāng)碎片和活動(dòng)建立關(guān)聯(lián)的時(shí)候調(diào)用。
  • onCreateView() 為碎片創(chuàng)建視圖(加載布局)時(shí)調(diào)用。
  • onActivityCreated() 確保與碎片相關(guān)聯(lián)的活動(dòng)一定已經(jīng)創(chuàng)建完畢的時(shí)候調(diào)用。
  • onDestroyView() 當(dāng)與碎片關(guān)聯(lián)的視圖被移除的時(shí)候調(diào)用。
  • onDetach() 當(dāng)碎片和活動(dòng)解除關(guān)聯(lián)的時(shí)候調(diào)用。

以上就是關(guān)于Android中碎片F(xiàn)ragment的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Android中GridView插件的使用方法

    Android中GridView插件的使用方法

    今天小編就為大家分享一篇關(guān)于Android中GridView插件的使用方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android自定義實(shí)現(xiàn)可回彈的ScollView

    Android自定義實(shí)現(xiàn)可回彈的ScollView

    這篇文章主要為大家詳細(xì)介紹了Android自定義實(shí)現(xiàn)可回彈的ScollView,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android?Kotlin?中的groupBy方法詳解

    Android?Kotlin?中的groupBy方法詳解

    在Kotlin中,groupBy函數(shù)可以對(duì)集合進(jìn)行分組,形成一個(gè)Map,其中key是分組標(biāo)準(zhǔn),value是對(duì)應(yīng)的元素列表,本文通過(guò)實(shí)例詳細(xì)解釋groupBy的使用方法和常見(jiàn)應(yīng)用場(chǎng)景,如按員工年齡分組或產(chǎn)品類型統(tǒng)計(jì)數(shù)量等,展示了groupBy的靈活性和實(shí)用性
    2024-09-09
  • ViewPager實(shí)現(xiàn)輪播圖引導(dǎo)頁(yè)

    ViewPager實(shí)現(xiàn)輪播圖引導(dǎo)頁(yè)

    這篇文章主要為大家詳細(xì)介紹了ViewPager實(shí)現(xiàn)輪播圖引導(dǎo)頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 微信公眾平臺(tái)開(kāi)發(fā)入門(mén)教程(SAE方倍工作室)

    微信公眾平臺(tái)開(kāi)發(fā)入門(mén)教程(SAE方倍工作室)

    在這篇微信公眾平臺(tái)開(kāi)發(fā)教程中,我們假定你已經(jīng)有了PHP語(yǔ)言程序、MySQL數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)通訊、及HTTP/XML/CSS/JS等基礎(chǔ)
    2014-05-05
  • Android UI使用HTML布局方法實(shí)例

    Android UI使用HTML布局方法實(shí)例

    這篇文章主要介紹了Android UI使用HTML布局方法實(shí)例,布局文件直接用一個(gè)WebView來(lái)代替,這樣就可以在WebView中使用HTML布局了,需要的朋友可以參考下
    2015-05-05
  • Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法

    Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android中的dumpsys命令詳解

    Android中的dumpsys命令詳解

    本文詳細(xì)講解了Android中的dumpsys命令,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Android開(kāi)發(fā)筆記 Handler使用總結(jié)

    Android開(kāi)發(fā)筆記 Handler使用總結(jié)

    當(dāng)應(yīng)用程序啟動(dòng)時(shí),Android首先會(huì)開(kāi)啟一個(gè)主線程(也就是UI線程),主線程為管理界面中的UI控件,進(jìn)行事件分發(fā)
    2012-11-11
  • android 獲取本機(jī)的IP地址和mac物理地址的實(shí)現(xiàn)方法

    android 獲取本機(jī)的IP地址和mac物理地址的實(shí)現(xiàn)方法

    本文主要介紹android 獲取本機(jī)的IP地址和mac物理地址的實(shí)現(xiàn)方法,這里提供示例代碼,實(shí)現(xiàn)功能,有需要的小伙伴可以參考下
    2016-09-09

最新評(píng)論

青州市| 兴化市| 岳普湖县| 昆明市| 称多县| 渭南市| 承德县| 汪清县| 泰来县| 肥东县| 运城市| 通辽市| 三都| 甘孜| 射洪县| 西峡县| 汨罗市| 阿拉善左旗| 德钦县| 平武县| 木兰县| 纳雍县| 禹城市| 临城县| 南雄市| 山西省| 鹤山市| 吐鲁番市| 独山县| 长治市| 阳谷县| 米脂县| 海宁市| 彭阳县| 绥化市| 栾川县| 华蓥市| 新竹市| 宜州市| 札达县| 伊金霍洛旗|