Android Jetpack Navigation基本使用

来源:https://www.cnblogs.com/askajohnny/archive/2022/06/15/16378870.html
-Advertisement-
Play Games

Android Jetpack Navigation基本使用 本篇主要介紹一下 Android Jetpack 組件 Navigation 導航組件的 基本使用 當看到 Navigation單詞的時候 應該就大概知道 這是一個關於導航用的,下麵我來簡單介紹一下 如何使用Navigation組件的基本 ...


Android Jetpack Navigation基本使用

本篇主要介紹一下 Android Jetpack 組件 Navigation 導航組件的 基本使用

當看到 Navigation單詞的時候 應該就大概知道 這是一個關於導航用的,下麵我來簡單介紹一下 如何使用Navigation組件的基本使用流程,並且一步步 實際操作一番 Navigation ,下圖是案例,實現登錄到詳情的跳轉

image-20220615130550772

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 創建導航圖

導航圖是一種資源文件,其中包含您的所有目的地和操作。該圖表會顯示應用的所有導航路徑。

向項目添加導航圖,請執行以下操作:

  1. 在“Project”視窗中,右鍵點擊 res 目錄,然後依次選擇 New > Android Resource File。此時系統會顯示 New Resource File 對話框。
  2. File name 欄位中輸入名稱,例如“nav_graph”。
  3. Resource type 下拉列表中選擇 Navigation,然後點擊 OK

當您添加首個導航圖時,Android Studio 會在 res 目錄內創建一個 navigation 資源目錄。該目錄包含您的導航圖資源文件(例如 nav_graph.xml)。

image-20220615123057359

新建完成後 就自動 在 res 下麵生成 navigation目錄,裡面存放上面新建的 導航圖

image-20220615123159726

2.3 導航圖中添加目的地Fragment

點擊上面的菜單 + 就可以新建 destination 了

image-20220615123452177

新建了2個 fragment ,一個是 loginFragment 一個是 welcomeFragment

image-20220615123539595

把他們兩個連起來 從 loginFragment 到 welcomeFragment ,會自動生成一個 action

image-20220615125955970

順便稍微美化一下 loginFragment 和 welcomeFragment

image-20220615130550772

2.4 Activity添加 NavHost

導航宿主NavHost 是 Navigation 組件的核心部分之一。導航宿主是一個空容器,用戶在您的應用中導航時,目的地會在該容器中交換進出。

導航組件包含一個預設 NavHost 實現 (NavHostFragment

下麵在MainActivity 中添加一個 NavHostFragment

image-20220615131058193

拖入 Activity中 它會自動展示出可用的 Navigation Graph 導航圖,就是上面創建的 my_nav_graph,選擇它即可

image-20220615131127332

2.5 LoginFragment 代碼編寫

navController.navigate(R.id.action_loginFragment_to_welcomeFragment,bundle);

核心代碼如下,就是獲取 輸入的用戶名和密碼 並且攜帶用戶名 導航到 welcomeFragment

image-20220615132726582

2.6 welcomeFragment 代碼編寫

很簡單就是把 loginFragment 傳入的參數 username 獲取到 展示在TextView 上即可

註意:通過 getArguments() 去獲取 Bundle 的參數

image-20220615132852072

最終效果如下:

QQ20220615-134219-HD

總結

本篇主要簡單介紹了一下 Navigation 是什麼 以及使用它的流程是什麼,並且結合實際案例 操作了一番,Navigation 還有很多其他用法,如條件導航、嵌套圖、過度動畫 等等功能 有機會再操作

歡迎大家訪問 個人博客 Johnny小屋


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 指數增長模型 設第今年的人口為 \(x_0\),年增長率為 \(r\),預測 \(k\) 年後的人口為 \(x_k\),則有 \[ x_k = x_0(1+r)^k \tag{1} \] 這個模型的前提是年增長率 \(r\) 在 \(k\) 年內保持不變. 利用 (1) 式可以根據人口估計年增 ...
  • 日常開發中,我們都會用到線程池,一般會用execute()和submit()方法提交任務。但是當你用過CompletableFuture之後,就會發現以前的線程池處理任務有多難用,功能有多簡陋,CompletableFuture又是多麼簡潔優雅。 要知道CompletableFuture已經隨著Ja ...
  • 能夠理解服務監控三要素 能夠理解常用的APM系統優勢差異 能夠基於IDEA集成Skywalking Agent 能基於生產環境使用Skywalking Agent 掌握Rocketbot 性能分析 鏈路追蹤 儀錶盤應用 Webhook 1 Skywalking概述 隨著互聯網架構的擴張,分散式系統變 ...
  • 作者:永動的圖靈機 鏈接:https://juejin.cn/post/6844904033488994317 統一結果返回 目前的前後端開發大部分數據的傳輸格式都是json,因此定義一個統一規範的數據格式有利於前後端的交互與UI的展示。 統一結果的一般形式 是否響應成功; 響應狀態碼; 狀態碼描述 ...
  • 今天產品下了新需求,要給系統加雙語切換,在做到國家城市庫映射的時候,我在度娘上找了個雙語版的資料庫,可是系統已經在生產半年了,直接換表肯定是要背鍋的,轉念一想,要是能把城市信息直接替換為拼音不就行了,在此將操作步驟整理下來。 首先需要安裝一下擴展overtrue/pinyin,執行命令,我的框架是6 ...
  • 函數中參數傳值 1、基本數據類型傳值 當函數中傳入的參數為基本數據類型時,函數中對傳入參數的操作不會對函數外的數據產生影響。由於基本數據類型的變數名指向的是具體的數值,在函數內部,相當於將參數進行了拷貝,函數內只對拷貝後的參數進行操作。 基本數據類型 public class ParamsTrans ...
  • 1.1.1 JAVA概述 Java版本 原網址(https://www.oracle.com/java/technologies/java-se-support-roadmap.html) Oracle 將僅將某些版本指定為長期支持 (LTS) 版本。Java SE 7、8、11 和 17 是 LT ...
  • 本項目將使用python3去識別圖片是否為色情圖片,會使用到PIL這個圖像處理庫,並且編寫演算法來劃分圖像的皮膚區域 介紹一下PIL: PIL(Python Image Library)是一種免費的圖像處理工具包,這個軟體包提供了基本的圖像處理功能,如:改變圖像大小,旋轉 圖像,圖像格式轉化,色場空間 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...