问题标签 [android-architecture-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6884 浏览

android - 此 NavController 不知道导航 DESTINATION_NAME,重新打开之前使用 navController.popBackStack() 关闭的片段?

我在我的应用程序中使用导航组件,最近它工作正常,但是在将项目更新到之后,只有当该目的地(AndroidXnavigation destination DESTINATION_NAME is unknown to this NavController 要打开的)之前使用navController.popBackStack(). 此外,如果我从 关闭 DESTINATION 片段也没有错误MainActivity,但仅发生错误片段是使用popBackStack. 像下面

目标片段

主要活动

我也检查了相关的问题,但没有帮助类似的问题

注意:我使用的是最新版本的导航库 (alpha05)

0 投票
2 回答
4590 浏览

android - 带有导航抽屉的Jetpack导航不显示androidx中子片段的mobile_navigation.xml中给出的后退按钮和标题

我正在使用 Androidx,带有导航抽屉的 android jetpack 导航不显示 mobile_navigation.xml 中给出的后退按钮和标题,我尝试使用 nav_view.setupWithNavController(navController) 的导航不起作用,工作室显示未解析的符号。我已经为项目添加了所需的依赖项

Gradle.build :

这是我的 HomeActivity:

抽屉菜单.xml

这是 mobile_navigation.xml

0 投票
5 回答
4863 浏览

android - 忽略 navigate() 调用:FragmentManager 已经保存了它的状态

我正在使用导航MainActivity然后我开始SecondActivity(为了结果)。完成后SecondActivity我想继续导航MainActivity,但FragmentManager已经保存了他的状态。

Navigation.findNavController(view).navigate(R.id.action_next, bundle)我收到日志消息时:

我怎样才能继续导航?

0 投票
1 回答
1761 浏览

android - 使用 Android 导航架构组件重新创建 backstack

我正在尝试使用通知中的 PendingIntent 实现到我的应用程序的特定详细信息页面的导航,但是我在从详细信息页面重新创建返回堆栈一直到开始目的地时遇到问题。

我在这里制作了一个示例应用程序,其中包含一个活动和三个片段来演示:

从片段 1(起始目的地),我使用直接导航到片段 3

从片段 3 开始,当我打电话时,Navigation.findNavController(this,R.id.nav_host_fragment).navigateUp()我被导航回片段 1。有没有办法让它导航到新创建的片段 2?

0 投票
2 回答
1653 浏览

android - Android BottomNavigation 未使用导航控制器正确突出显示

我正在尝试从 Android 架构组件实现Nagivation 。我能够成功地浏览我的片段。我正在尝试将它附加到我的底部导航,但我无法正确使用它。我可以在片段之间成功导航,Navigation.findNavController(View).navigate(R.id.Fragment)但是当我使用任何 UI 组件或后退按钮进行导航时,底部导航的突出显示不会改变,如下面的 gif 所示

在此处输入图像描述

我的代码如下MainActivity.kt

为了HomeFragment.kt

0 投票
5 回答
35488 浏览

android - 是否可以使用 Android 导航架构组件(Android Jetpack)有条件地设置 startDestination?

我正在使用来自Android Jetpack的导航在屏幕之间导航。现在我想动态设置 startDestination。

我有一个名为 MainActivity 的 Activity 和两个 Fragment,FragmentA 和 FragmentB。

我想使用导航架构组件设置上述流程。目前我已经使用 startDestionation 如下,但它没有满足我的要求。

是否可以使用 Android 导航架构组件有条件地设置 startDestination?

0 投票
2 回答
690 浏览

android - 导航组件:条件导航中的工具栏问题

根据导航原则,您的应用程序中的第一个目的地应该是您的用户在注册/登录或任何其他条件导航后启动应用程序时通常会看到的屏幕,我称该起始目的地为“homeFragment”。

遵循这一原则并在阅读了Maria Neumayer 的关于条件导航的帖子后,我在通过条件导航流程时遇到了工具栏和后退导航的一些问题。

我正在使用具有 ConstraintLayout、工具栏和 NavHostFragment 的单个活动来构建应用程序:

主图看起来像这样,以家庭目的地为起始目的地,连接到细节片段的动作(此动作由按钮触发)和使用嵌套图实现的条件导航:

主图

我将此嵌套图称为welcomeGraph,它包括登录或注册屏幕,您可以在此处查看:

欢迎嵌套图

在 homeFragment onResume 中,我检查登录/注册是否已完成(由存储在 sharedPrefs 中的虚拟布尔值确定),如果没有,我启动欢迎嵌套图以进行注册/登录。

在登录目标中,我有一个“已完成”按钮,它将 sharedPrefs 中的虚拟布尔值设置为 true,并触发一个动作 popToWelcomeGraph(包括),它应该关闭整个嵌套图并将我带回 homeFragment(这有效)。

问题 - 嵌套图中的工具栏问题:

由于欢迎图在用户登陆应用程序后立即启动,因此工具栏不应在该嵌套图的第一个目的地显示后退/向上箭头,而是应该感觉好像它是应用程序上的第一个屏幕,然后点击back 应该退出应用程序。

问题:是否可以在此处更改工具栏以模拟嵌套图中的第一个屏幕是应用程序中的第一个屏幕,直到登录/注册完成?这是一个不好的做法吗?

0 投票
2 回答
8092 浏览

android - Android导航组件未解析参考

我刚刚将平台从 windows 更改为 mac,当我尝试构建我的应用程序时,我收到以下消息:

错误在该行:

在 Windows 上,我使用了较旧的 3.3 canary 版本,但在开发人员网站上,导航组件没有任何变化。

我不确定它是 Mac 还是 Android Studio canary 6 错误。

任何帮助,将不胜感激!

0 投票
4 回答
3494 浏览

android-layout - 带有导航组件的单个 Activity:如何处理不同的 AppBar / 主题

自从在 Google I/O 上宣布新的导航组件后不久,我就一直在使用它,并且也开始尽可能地接受单一活动。

Single Activity 允许我在视图之间共享 ViewModel 以获得很棒的体验,如果我不是被迫的话,我真的不想回到多 Activity 中。

但是有一些东西妨碍了:AppBar / Themes(状态栏)到单一活动概念。

这是我正在从事的设计的一部分:

不同部分的AppBar设计

如您所见,操作栏/状态栏的外观有不同的要求。

  1. 这是一个带有标准操作栏的简单抽屉
  2. 带有图像的经典细节位于半透明状态栏下方,应该用于CollapsingToolbarLayout在向上滚动时变成标准操作栏
  3. 在这种情况下,它是非标准的操作栏,我将其称为“浮动工具栏”,因为它不会扩展到整个屏幕,并且包含已经扩展的 SearchView / EditText
  4. 带有标签的相当标准的 AppBar

离开单一活动产生的问题列表:

  • 不能ViewModel在活动之间分享
  • 重复使用已在另一个活动导航图中定义的部分的复杂导航必须复制/移动到专用活动中
  • 后退导航“重建”在活动之间不起作用

如果可能的话,这些是我想避免的问题,但是你们如何在带有导航组件的单个活动上管理这些情况。任何想法?

0 投票
6 回答
9459 浏览

android - 隐藏子屏幕/片段的android底部导航视图

我正在尝试创建一个单一活动的 Android 应用程序。我有带有 BottomNavigationView、三个顶级片段和一些子片段的 MainActivity(仅活动)。我的要求是每当屏幕显示顶级片段时,底部导航应该是可见的,以便可以进行切换。但是当我查看任何子片段时,应该隐藏底部导航。是否有使用 Navigation 组件的开箱即用方式或需要手动更改可见性?