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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...