Android學習筆記(3)
Fragment
標籤: Android
Fragment用法
Fragment是一種可以嵌入在活動中的UI片段。碎片一般都是被引入活動中,比如平板介面使用2個Fragment利用整個平板螢幕,不至於浪費空間和不美觀。
Fragment簡單用法
定義2個佈局檔案left_fragment和right—_fragment,如下
<LinearLayout...
... />
<Button
android:id="@+id/button"
... />
</LinearLayout>
再新建LeftFragment類繼承Fragment,重寫onCreateView方法,載入left_fragment佈局檔案。RightFragment類類似
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;
}
}
最後在佈局中使用fragment標籤,新增Fragment如下
<LinearLayout
... />
<fragment
android:id="@+id/left_gragment"
andorid:name="com.example.fragmenttest.LeftFragment"
android:layout_weight="1"
... />
<fragemnt
android:id="@+id/right_fragment"
android:name="...RightFragment"
android:layout_weight="1"
... />
動態新增Fragment
新建Fragment佈局檔案,以及Fragment類 將right_fragment佈局標籤改為Fragment佈局,用來支援Fragment動態新增
<FrameLayout
android:id="@+id/right_layout"
... />
</FrameLayout>
- 建立待新增Fragment例項
- 呼叫getSupportFragmentManager,獲取到FragmentManager
- 開啟事務,beginTransaction方法
- 向容器內新增或替換Fragment,replace方法接收2個引數,一個容器id如佈局檔案id right_layout,和Fragment例項
- 提交事務,commit
注意一點,呼叫addToBackStack方法可以模擬返回棧的功能,即點選Back鍵後會回到上一個Fragment而不是直接退出程式
Fragment和Activity之間的通訊
活動中可以獲取Fragment的例項進而呼叫方法
XXXFragment fragment = (XXXFragment) getFragmentManager().findFragmentById(R.id.xxx_fragment);
Fragment中獲取活動例項
MainActivity activity = (MainActivity) getActivity();
Fragment生命週期
- onAttach Fragment和活動建立關聯時呼叫
- onCreateView 為fragment建立檢視(載入佈局)時呼叫
- onActivityCreated 關聯的活動建立完畢時呼叫
- onDestroyView 檢視被移除時呼叫
- onDetach Fragment和活動解除關聯時呼叫
技巧
使用限定符和最小寬度限定符可以根據裝置螢幕大小載入
對於最後的News專案的整體總結
考慮到平板和手機的相容性,當使用Fragment的時候,建立Fragment佈局檔案,在Fragment類中載入佈局檔案。在活動的佈局中新增fragment標籤並指定android:name="...Fragmemt"。
手機僅載入一個Fragment,而平板還載入了包含在幀佈局中的Fragment 手機用活動來顯示,新建活動並複用Fragment類,使用fragment標籤,在活動佈局檔案中會自動引入Fragment佈局檔案。在活動的onCreat方法中獲取Fragment例項,並呼叫Fragment的方法顯示資料。
新建Fragment用來顯示RecyclerView以及相應的子項佈局,通過判斷是否能獲取幀佈局的id,如果是平板雙頁,載入另一個Fragment,否則則利用Intent啟動另一個活動顯示內容。
相關文章
- Vue學習筆記3Vue筆記
- Thymeleaf 3學習筆記筆記
- CCNA學習筆記3筆記
- mysql學習筆記3MySql筆記
- Vue 3 學習筆記Vue筆記
- Android 學習筆記雜記Android筆記
- Android學習筆記·ANRAndroid筆記
- Android學習筆記·HandlerAndroid筆記
- Android SQLite學習筆記AndroidSQLite筆記
- Android學習筆記一Android筆記
- Android學習筆記(6)Android筆記
- Android學習筆記(4)Android筆記
- Android學習筆記(5)Android筆記
- Android學習筆記(2)Android筆記
- Android學習筆記(1)Android筆記
- Android學習筆記(8)Android筆記
- Android學習筆記(7)Android筆記
- Android GC 學習筆記AndroidGC筆記
- android學習筆記--ScannerAndroid筆記
- android學習筆記--AlarmManagerAndroid筆記
- android學習筆記二Android筆記
- android學習筆記三Android筆記
- Android學習筆記四Android筆記
- android學習筆記五Android筆記
- android學習筆記六Android筆記
- Android OpenGL 學習筆記Android筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- swift學習筆記《3》-技巧Swift筆記
- tensorflow學習筆記3筆記
- docker學習筆記(3)- 映象Docker筆記
- Python學習筆記(3)Python筆記
- PL/SQL學習筆記-3SQL筆記
- ruby 字串學習筆記3字串筆記
- Vue3 學習筆記Vue筆記
- Android Linker學習筆記Android筆記
- Android學習筆記·ADBAndroid筆記
- Android 學習筆記思考篇Android筆記
- Android 學習筆記核心篇Android筆記