国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android學習之Fragment

2020-04-11 10:59:12
字體:
來源:轉載
供稿:網友

Fragment 是什么

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

一、碎片的簡單用法

創建兩個布局文件:

<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>

二、動態添加碎片

可以在代碼當中動態添加碎片:

@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;  } }

動態添加碎片主要分為 5 步。

1、創建待添加的碎片實例。
2、獲取到 FragmentManager,在活動中可以直接調用 getFragmentManager()方法得到。
3、開啟一個事務,通過調用 beginTransaction()方法開啟。
4、向容器內加入碎片,一般使用 replace()方法實現,需要傳入容器的 id 和待添加的碎片實例。
5、提交事務,調用 commit()方法來完成。

三、在碎片中模擬返回棧

通過點擊按鈕添加了一個碎片之后,這時按下 Back 鍵程序就會直接退出。

 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; }  }}

四、碎片和活動之間進行通信

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

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

在每個碎片中都可以通過調用getActivity() 方法來得到和當前碎片相關聯 的活動實例,代碼如下所示:

  MainActivity activity = (MainActivity) getActivity();

五、碎片的生命周期

運行狀態:當一個碎片是可見的,并且它所關聯的活動正處于運行狀態時,該碎片也處于運行狀態。
暫停狀態:當一個活動進入暫停狀態時(由于另一個未占滿屏幕的活動被添加到了棧頂),與它相關聯的可見碎片就會進入到暫停狀態。
停止狀態:當一個活動進入停止狀態時,與它相關聯的碎片就會進入到停止狀態。
銷毀狀態:碎片總是依附于活動而存在的,因此當活動被銷毀時,與它相關聯的碎片就會進入 到銷毀狀態。

下面是碎片的一些回調方法:

  • onAttach() 當碎片和活動建立關聯的時候調用。
  • onCreateView() 為碎片創建視圖(加載布局)時調用。
  • onActivityCreated() 確保與碎片相關聯的活動一定已經創建完畢的時候調用。
  • onDestroyView() 當與碎片關聯的視圖被移除的時候調用。
  • onDetach() 當碎片和活動解除關聯的時候調用。

以上就是關于Android中碎片Fragment的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江陵县| 漾濞| 大关县| 金门县| 垣曲县| 禄劝| 洛阳市| 江山市| 和林格尔县| 肇州县| 鸡西市| 北京市| 手游| 白河县| 彩票| 宁夏| 五莲县| 广宁县| 信宜市| 沈阳市| 凭祥市| 清丰县| 靖江市| 惠来县| 蕲春县| 招远市| 乌鲁木齐县| 肇庆市| 托克逊县| 永泰县| 宣威市| 金坛市| 叶城县| 齐齐哈尔市| 开封市| 天全县| 鄱阳县| 榆社县| 溧水县| 东乌珠穆沁旗| 平安县|