Android Jetpack Navigation基本使用 本篇主要介紹一下 Android Jetpack 組件 Navigation 導航組件的 基本使用 當看到 Navigation單詞的時候 應該就大概知道 這是一個關於導航用的,下麵我來簡單介紹一下 如何使用Navigation組件的基本 ...
Android Jetpack Navigation基本使用
本篇主要介紹一下 Android Jetpack 組件 Navigation 導航組件的 基本使用
當看到 Navigation單詞的時候 應該就大概知道 這是一個關於導航用的,下麵我來簡單介紹一下 如何使用Navigation組件的基本使用流程,並且一步步 實際操作一番 Navigation ,下圖是案例,實現登錄到詳情的跳轉
1.Navigation 基本概念
Navigation 是一個Jetpack組件 支持用戶導航,用於在 Android 應用中的“目標”之間進行導航,無論 目標是Fragment,Activity 還是其他組件。
導航組件由以下三個關鍵部分組成:
- 導航圖:在一個集中位置包含所有導航相關信息的 XML 資源。這包括應用內所有單個內容區域(稱為目標)以及用戶可以通過應用獲取的可能路徑。
NavHost
:顯示導航圖中目標的空白容器。導航組件包含一個預設NavHost
實現 (NavHostFragment
),可顯示 Fragment 目標。NavController
:在NavHost
中管理應用導航的對象。當用戶在整個應用中移動時,NavController
會安排NavHost
中目標內容的交換。
簡單點 下麵直接來操作一下 來體驗一下Navigation 的使用流程
2.Navigation 使用入門
2.1 添加Navigation依賴
簡單點 只需要設置 navigation-fragment 和 navigation-ui 即可
dependencies {
def nav_version = "2.4.2"
// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// Feature module Support
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
// Testing Navigation
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
// Jetpack Compose Integration
implementation "androidx.navigation:navigation-compose:$nav_version"
}
2.2 創建導航圖
導航圖是一種資源文件,其中包含您的所有目的地和操作。該圖表會顯示應用的所有導航路徑。
向項目添加導航圖,請執行以下操作:
- 在“Project”視窗中,右鍵點擊
res
目錄,然後依次選擇 New > Android Resource File。此時系統會顯示 New Resource File 對話框。 - 在 File name 欄位中輸入名稱,例如“nav_graph”。
- 從 Resource type 下拉列表中選擇 Navigation,然後點擊 OK。
當您添加首個導航圖時,Android Studio 會在 res
目錄內創建一個 navigation
資源目錄。該目錄包含您的導航圖資源文件(例如 nav_graph.xml
)。
新建完成後 就自動 在 res 下麵生成 navigation目錄,裡面存放上面新建的 導航圖
2.3 導航圖中添加目的地Fragment
點擊上面的菜單 + 就可以新建 destination 了
新建了2個 fragment ,一個是 loginFragment 一個是 welcomeFragment
把他們兩個連起來 從 loginFragment 到 welcomeFragment ,會自動生成一個 action
順便稍微美化一下 loginFragment 和 welcomeFragment
2.4 Activity添加 NavHost
導航宿主NavHost 是 Navigation 組件的核心部分之一。導航宿主是一個空容器,用戶在您的應用中導航時,目的地會在該容器中交換進出。
導航組件包含一個預設 NavHost
實現 (NavHostFragment
下麵在MainActivity 中添加一個 NavHostFragment
拖入 Activity中 它會自動展示出可用的 Navigation Graph 導航圖,就是上面創建的 my_nav_graph,選擇它即可
2.5 LoginFragment 代碼編寫
navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);
核心代碼如下,就是獲取 輸入的用戶名和密碼 並且攜帶用戶名 導航到 welcomeFragment
2.6 welcomeFragment 代碼編寫
很簡單就是把 loginFragment 傳入的參數 username 獲取到 展示在TextView 上即可
註意:通過 getArguments() 去獲取 Bundle 的參數
最終效果如下:
總結
本篇主要簡單介紹了一下 Navigation 是什麼 以及使用它的流程是什麼,並且結合實際案例 操作了一番,Navigation 還有很多其他用法,如條件導航、嵌套圖、過度動畫 等等功能 有機會再操作
歡迎大家訪問 個人博客 Johnny小屋