首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Fragment 入門核心知識體系與學習路徑

     編輯:程式設計綜合問答

Fragment 定位

Fragment 代表 Activity 界面中的一部分行為或 UI 組合,擁有獨立生命週期,可動態添加/移除/替換,實現大螢幕多欄佈局與小螢幕單欄切換的自適應。

三大核心必修課

1. 生命週期(與 Activity 交互)

onAttach() → onCreate() → onCreateView() → onViewCreated() 
→ onActivityCreated() → onStart() → onResume()
// 可見狀態
→ onPause() → onStop() → onDestroyView() → onDestroy() → onDetach()

關鍵點:onCreateView 返回根 View,onDestroyView 釋放 View 引用防洩漏,setRetainInstance(true) 可跨配置變更保留實例(僅數據,不含 View)。

2. 基本用法(靜態/動態)

  • 靜態:XML 中 <fragment android:name="...">,不可動態移除。
  • 動態:FragmentTransaction 操作:
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.container, new DetailFragment())
        .addToBackStack(null)
        .commit();
  • 必須使用 FragmentManager (v4 包 FragmentActivity/AppCompatActivity) 確保兼容性。

3. 與 Activity 通信(數據傳遞)

方向方式代碼要點
Activity → FragmentBundle + setArgumentsfragment.setArguments(bundle); 在 onCreate 取 getArguments()
Fragment → Activity介面回調定義 OnFragmentInteractionListener,onAttach 強轉 Context
Fragment ↔ Fragment共享 ViewModelViewModelProvider(requireActivity()).get(SharedVM.class)
返回結果setTargetFragment / FragmentResultListener (API 33+)getParentFragmentManager().setFragmentResult("key", bundle)

進階必知

  • Fragment 狀態保存:onSaveInstanceState(Bundle) 存輕量數據,配合 ViewModel 處理重數據。
  • 嵌套 Fragment:getChildFragmentManager() 管理子 Fragment,ViewPager2 + Fragment 典型場景。
  • DialogFragment:替代 Dialog,自動處理生命週期與旋轉重建。
  • Navigation Component:現代導航框架,聲明式圖定義 Fragment 間跳轉、深層鏈接、Safe Args 型別安全參數傳遞。

學習資源推薦

  1. 官方指南:Android Fragments
  2. Codelab:Fragment 基礎
  3. 經典圖書:《Android 程式設計權威指南》第 7 章、《Android 開發藝術探索》Fragment 章節。
  4. 開源專案:Google I/O App、Plaid、Now in Android 參考實現。

避坑指南

  • 不要在 Fragment 構造器傳參,必須用 setArguments(Bundle)。
  • 異步任務回調前檢查 isAdded() 防止 Activity 已銷毀導致 Crash。
  • 避免在 onCreateView 執行耗時操作,移至 onViewCreated 或背景線程。
  • 使用 requireContext()/requireActivity() 替代 getContext() 獲取非空引用。

系統掌握上述知識體系,配合實戰練習,兩週內可從入門達到業務開發勝任水平。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved