91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

導(dǎo)航對多返回棧的支持

谷歌開發(fā)者 ? 來源:Android 開發(fā)者 ? 作者:Android ? 2021-09-29 11:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

歡迎來到第二個(gè)關(guān)于導(dǎo)航的 MAD Skill 系列的另一篇文章!本文我們將介紹一個(gè)呼聲很高的功能,即導(dǎo)航 (Navigation) 對多返回棧的支持。如果您更傾向于視頻的形式,請查看以下視頻內(nèi)容:

概述

假設(shè)您的應(yīng)用使用了 BottomNavigationView。通過這個(gè)功能,當(dāng)用戶選擇另一個(gè)標(biāo)簽頁 (Tab) 時(shí),當(dāng)前標(biāo)簽頁的返回棧會(huì)被保存,而所選標(biāo)簽頁的返回棧會(huì)被恢復(fù)。

從 2.4.0-alpha01 版本開始,NavigationUI 輔助類不需要改變?nèi)魏未a即可支持多返回棧。也就是說,如果您的應(yīng)用使用了為 BottomNavigationView 或 NavigationView 提供的 setupWithNavController() 方法,則只需要更新依賴庫版本,便可默認(rèn)啟用多返回棧。

支持多返回棧

讓我們通過這個(gè)倉庫中的高級導(dǎo)航示例來看看實(shí)際效果。

該應(yīng)用由 3 個(gè)標(biāo)簽頁組成,每個(gè)標(biāo)簽頁都有它自己的導(dǎo)航流。為了在導(dǎo)航的早期版本中支持多返回棧,我們需要在該示例的 NavigationExtensions 文件中添加一系列輔助函數(shù)。通過這些擴(kuò)展函數(shù),應(yīng)用可以為每個(gè)標(biāo)簽頁保持一個(gè)單獨(dú)的 NavHostFragment,每個(gè) NavHostFragment 帶有它自己的返回棧,當(dāng)用戶切換標(biāo)簽頁時(shí),應(yīng)用在不同的 NavHostFragment 之間進(jìn)行切換。

倉庫

https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample

NavigationExtensions

https://github.com/android/architecture-components-samples/blob/8f4936b34ec84f7f058fba9732b8692e97c65d8f/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt

讓我們看看如果移除這些擴(kuò)展函數(shù)會(huì)發(fā)生什么。為此我刪除了 NavigationExtensions 類,在所有使用它的地方都替換為 NavigationUI 中標(biāo)準(zhǔn)的 setupWithNavController() 方法以將我們的 BottomNavigationView 連接到 NavController 上。

class MainActivity : AppCompatActivity()

{ private lateinit var navController: NavController private lateinit var appBarConfiguration: AppBarConfiguration override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main) val navHostFragment = supportFragmentManager.findFragmentById( R.id.nav_host_container ) as NavHostFragment navController = navHostFragment.navController

// 使用 navController 設(shè)置 bottomNavigationView val bottomNavigationView = findViewById《BottomNavigationView》(R.id.bottom_nav) bottomNavigationView.setupWithNavController(navController)

// 使用 navController 設(shè)置 ActionBar 以及 3 個(gè)一級目的地頁面 appBarConfiguration = AppBarConfiguration( setOf(R.id.titleScreen, R.id.leaderboard, R.id.register) ) val toolbar = findViewById《Toolbar》(R.id.toolbar) setSupportActionBar(toolbar) toolbar.setupWithNavController(navController, appBarConfiguration) } override fun onSupportNavigateUp(): Boolean { return navController.navigateUp(appBarConfiguration)

}}

同時(shí),我使用 include 標(biāo)簽將 3 個(gè)單獨(dú)的導(dǎo)航圖合并為一個(gè)圖。現(xiàn)在我們的 Activity 布局只包含一個(gè)帶有單個(gè)導(dǎo)航圖的 NavHostFragment。

《navigation xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.android.com/apk/res-auto” android:id=“@+id/nav_graph” app:startDestination=“@+id/home”》

《include app:graph=“@navigation/home”/》 《include app:graph=“@navigation/list”/》 《include app:graph=“@navigation/form”/》

《/navigation》

當(dāng)我運(yùn)行應(yīng)用時(shí),這次底部標(biāo)簽頁不再保持它們的狀態(tài),并會(huì)在我切換到其他標(biāo)簽頁時(shí)重置它的返回棧。由于移除了 NavigationExtensions,該應(yīng)用不再支持多返回棧。 現(xiàn)在我將更新 navigation 和 fragment 依賴庫的版本。

// fragment 最新版本 https://developer.android.google.cn/jetpack/androidx/releases/fragment?hl=en// navigation 最新版本 https://developer.android.google.cn/jetpack/androidx/releases/navigation?hl=en

versions.fragment = “1.4.0-alphaXXX”versions.navigation = “2.4.0-alphaXXX”

Gradle sync 完成后,我再次運(yùn)行應(yīng)用,這時(shí)當(dāng)我導(dǎo)航至其他標(biāo)簽頁,可以看到每個(gè)標(biāo)簽頁都保持了它的狀態(tài)。注意這個(gè)行為是默認(rèn)啟用的。 最后,讓我們運(yùn)行測試來驗(yàn)證是否一切正常。該應(yīng)用已經(jīng)擁有一些驗(yàn)證多返回棧行為的測試。我運(yùn)行 BottomNavigationTest 并觀察每個(gè)底部導(dǎo)航行為測試的運(yùn)行。 瞧,我們所有測試都通過了!

小結(jié)

就是這樣!如果您的應(yīng)用使用 BottomNavigationView 或 NavigationView,并且您一直在等待支持多返回棧,您所需要做的僅僅是更新 navigation 和 fragment 依賴庫,不需要改變?nèi)魏未a! 如果您需要進(jìn)一步的自定義,也有新的 API 支持保存和恢復(fù)返回棧。請參閱我們之前的推文《Android 多返回棧技術(shù)詳解》。 如果您想了解更多有關(guān)底層 API 以及需要修改哪些內(nèi)容以支持多返回棧的信息,請參閱我們之前的推文《全新的 Fragment: 使用新的狀態(tài)管理器》。 感謝您關(guān)注本導(dǎo)航系列!

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 導(dǎo)航
    +關(guān)注

    關(guān)注

    7

    文章

    577

    瀏覽量

    43929
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73984

原文標(biāo)題:導(dǎo)航: 多返回棧 | MAD Skills

文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    國內(nèi)七大無人機(jī)模融合導(dǎo)航定位系統(tǒng)軟件介紹

    無人機(jī)模融合導(dǎo)航定位系統(tǒng)
    的頭像 發(fā)表于 01-12 15:33 ?253次閱讀

    無人機(jī)模融合導(dǎo)航定位系統(tǒng):信息化驅(qū)動(dòng)支撐平臺(tái)

    無人機(jī)模融合導(dǎo)航定位系統(tǒng):信息化驅(qū)動(dòng)支撐平臺(tái)
    的頭像 發(fā)表于 01-12 11:45 ?221次閱讀
    無人機(jī)<b class='flag-5'>多</b>模融合<b class='flag-5'>導(dǎo)航</b>定位系統(tǒng):信息化驅(qū)動(dòng)支撐平臺(tái)

    AT6558R模衛(wèi)星導(dǎo)航接收機(jī)芯片技術(shù)與應(yīng)用解析

    ? ? ? 在衛(wèi)星導(dǎo)航技術(shù)高速發(fā)展的當(dāng)下,模兼容、高集成度、低功耗已成為接收機(jī)芯片的核心發(fā)展方向。AT6558R作為一款高性能模衛(wèi)星導(dǎo)航接收機(jī)芯片,憑借先進(jìn)的SOC單芯片設(shè)計(jì)架構(gòu),
    的頭像 發(fā)表于 12-25 16:53 ?748次閱讀
    AT6558R<b class='flag-5'>多</b>模衛(wèi)星<b class='flag-5'>導(dǎo)航</b>接收機(jī)芯片技術(shù)與應(yīng)用解析

    模態(tài)大模型驅(qū)動(dòng)的復(fù)雜環(huán)境精準(zhǔn)導(dǎo)航避障系統(tǒng)平臺(tái)的應(yīng)用

    模態(tài)大模型驅(qū)動(dòng)的復(fù)雜環(huán)境精準(zhǔn)導(dǎo)航避障系統(tǒng)平臺(tái)的應(yīng)用
    的頭像 發(fā)表于 12-22 13:15 ?283次閱讀
    <b class='flag-5'>多</b>模態(tài)大模型驅(qū)動(dòng)的復(fù)雜環(huán)境精準(zhǔn)<b class='flag-5'>導(dǎo)航</b>避障系統(tǒng)平臺(tái)的應(yīng)用

    Stack到底用來干嘛的呢?

    我們在函數(shù)的局部變量、數(shù)組這些不能超過1K(含嵌套的函數(shù)),否則程序就會(huì)崩潰進(jìn)入hardfaul。 除了這些局部變量以外,還有一些實(shí)時(shí)操作系統(tǒng)的現(xiàn)場保護(hù)、返回地址都是存儲(chǔ)在里面。 還有一點(diǎn)題外話,就是的增長方向是從高地址到低
    發(fā)表于 12-01 08:04

    電能質(zhì)量在線監(jiān)測裝置支持平臺(tái)數(shù)據(jù)推送嗎?

    和技術(shù)細(xì)節(jié): 一、核心技術(shù)支撐 協(xié)議并行支持 主流裝置通常內(nèi)置多種通信協(xié)議,可同時(shí)激活多個(gè)協(xié)議向不同平臺(tái)推送數(shù)據(jù)。例如: 工業(yè)協(xié)議 :Modbus TCP(用于 SCADA 系統(tǒng))、IEC 61850 MMS(用于智能變電站
    的頭像 發(fā)表于 11-07 09:59 ?586次閱讀

    AT6558--北斗定位芯片 一款高性能 BDS/GNSS 模衛(wèi)星導(dǎo)航接收機(jī) SOC 單芯片

    ,可以同時(shí)接收六個(gè)衛(wèi)星導(dǎo)航系統(tǒng)的 GNSS 信號(hào),并且實(shí)現(xiàn)聯(lián)合定位、導(dǎo)航與授時(shí)。二、AT6558的功能概述: 支持 BDS/GPS/GLONASS 衛(wèi)星導(dǎo)航系統(tǒng)的單系統(tǒng)定位,以及任
    發(fā)表于 09-29 09:54

    SkyLiTE? 高頻段頻段功率放大器模塊,支持 LTE 高級應(yīng)用 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()SkyLiTE? 高頻段頻段功率放大器模塊,支持 LTE 高級應(yīng)用相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有SkyLiTE? 高頻段
    發(fā)表于 09-24 18:35
    SkyLiTE? 高頻段<b class='flag-5'>多</b>模<b class='flag-5'>多</b>頻段功率放大器模塊,<b class='flag-5'>支持</b> LTE 高級應(yīng)用 skyworksinc

    AT6558R:高性能模衛(wèi)星導(dǎo)航芯片的全面解析

    前端、數(shù)字基帶處理器、32位RISC CPU和電源管理模塊,還支持中國北斗(BDS)、美國GPS、俄羅斯GLONASS等系統(tǒng)聯(lián)合定位,為各類設(shè)備提供精準(zhǔn)可靠的定位服務(wù)。? 其創(chuàng)新架構(gòu)確保了在復(fù)雜環(huán)境下的穩(wěn)定性,是現(xiàn)代導(dǎo)航和物聯(lián)
    的頭像 發(fā)表于 07-24 15:30 ?1152次閱讀
    AT6558R:高性能<b class='flag-5'>多</b>模衛(wèi)星<b class='flag-5'>導(dǎo)航</b>芯片的全面解析

    MEMS組合導(dǎo)航系統(tǒng)能否成為領(lǐng)域導(dǎo)航的“全能王者”?

    在現(xiàn)代化作業(yè)場景中,高精度、高可靠性的導(dǎo)航系統(tǒng)已成為各領(lǐng)域不可或缺的核心設(shè)備。ER-GNSS/MINS-01 MEMS組合導(dǎo)航系統(tǒng)作為一款將衛(wèi)星定位與慣性測量技術(shù)融合的創(chuàng)新產(chǎn)品,猶如一顆璀璨的新星
    的頭像 發(fā)表于 07-21 15:57 ?1032次閱讀
    MEMS組合<b class='flag-5'>導(dǎo)航</b>系統(tǒng)能否成為<b class='flag-5'>多</b>領(lǐng)域<b class='flag-5'>導(dǎo)航</b>的“全能王者”?

    組合導(dǎo)航系統(tǒng)如何實(shí)現(xiàn)源融合破解單一導(dǎo)航局限

    無論是自動(dòng)駕駛汽車、無人機(jī)巡檢,還是精準(zhǔn)農(nóng)業(yè)、飛行記錄儀,高精度、高可靠的導(dǎo)航都是核心需求。然而,傳統(tǒng)導(dǎo)航技術(shù)各有短板:衛(wèi)星導(dǎo)航(GNSS):信號(hào)易受遮擋(如城市峽谷、隧道),且易受干擾或欺騙。慣性
    的頭像 發(fā)表于 07-10 16:58 ?988次閱讀
    組合<b class='flag-5'>導(dǎo)航</b>系統(tǒng)如何實(shí)現(xiàn)<b class='flag-5'>多</b>源融合破解單一<b class='flag-5'>導(dǎo)航</b>局限

    【匯思博SEEK100開發(fā)板試用體驗(yàn)】06 天氣app--使用組件導(dǎo)航實(shí)現(xiàn)設(shè)置頁及頁面跳轉(zhuǎn)

    ,支持在不同組件間傳遞跳轉(zhuǎn)參數(shù),提供靈活的跳轉(zhuǎn)操作,從而更便捷地實(shí)現(xiàn)對不同頁面的訪問和復(fù)用。本文將從組件導(dǎo)航(Navigation)的顯示模式、路由操作、子頁面管理、跨包跳轉(zhuǎn)以及跳轉(zhuǎn)動(dòng)效等幾個(gè)方面進(jìn)行
    發(fā)表于 07-09 16:57

    AT2659模衛(wèi)星導(dǎo)航射頻放大器技術(shù)解析與應(yīng)用

    電路,完全符合RoHS環(huán)保標(biāo)準(zhǔn),適用于各類對尺寸和功耗敏感的導(dǎo)航設(shè)備。 技術(shù)特性詳解 系統(tǒng)兼容性 該芯片支持1550MHz~1615MHz工作頻段,完整覆蓋: 中國北斗系統(tǒng)(BDS) L1頻段
    的頭像 發(fā)表于 06-26 16:19 ?781次閱讀
    AT2659<b class='flag-5'>多</b>模衛(wèi)星<b class='flag-5'>導(dǎo)航</b>射頻放大器技術(shù)解析與應(yīng)用

    AT2659導(dǎo)航芯片技術(shù)解析

    引言:系統(tǒng)兼容導(dǎo)航芯片的微型化突破 ? ? ? 隨著北斗BDS、GPS等全球導(dǎo)航系統(tǒng)終端向高集成度發(fā)展,AT2659憑借SiGe工藝在1.5mm×1mm的超小封裝內(nèi)實(shí)現(xiàn)了23dB增益與0.71dB
    的頭像 發(fā)表于 06-17 11:43 ?786次閱讀
    AT2659<b class='flag-5'>多</b>模<b class='flag-5'>導(dǎo)航</b>芯片技術(shù)解析

    深入淺出解析低功耗藍(lán)牙協(xié)議

    深入Bluetooth LE協(xié)議各個(gè)組成部分之前,我們先看一下Bluetooth LE協(xié)議整體架構(gòu)。 如上圖所述,要實(shí)現(xiàn)一個(gè)Bluetooth LE應(yīng)用,首先需要一個(gè)支持Bluetooth
    的頭像 發(fā)表于 04-09 14:49 ?1297次閱讀
    深入淺出解析低功耗藍(lán)牙協(xié)議<b class='flag-5'>棧</b>