问题标签 [android-jetpack-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 投票
0 回答
186 浏览

android - Android Jetpack 导航深层链接在 AndroidManifest 上生成效果不佳

问题

我在使用 Android 导航 XML 中的深层链接时遇到问题

然后 Jetpack 库在 Merged AndroidManifest.xml中生成此代码

最后一行生成我的深层链接在我从命令行手动执行时无法识别:

在第一组代码中添加“/”部分解决了问题

这也会在 AndroidManifest.xml 中生成相同的代码 执行此操作后,以下深层链接有效:“app://contact/”

问题:

有没有办法只使用“app://contact”让它工作?

0 投票
1 回答
3660 浏览

android - 如何检查导航目的地是否在 NavController 回栈中?

我正在寻找的是我的片段是否已经在后堆栈中。

例如,我导航到 Fragment A 到 Fragment B。稍后,我导航到 Fragment B 到 Fragment C。现在,我想签入 Fragment C 是否有 Fragment A 在后台堆栈中可用。如果是,我想弹出所有片段直到片段 A 否则我想添加新的片段 A。

请确保我想在片段 C 中检查片段 A 的可用性。

有运气吗?

提前致谢。

0 投票
2 回答
729 浏览

android - Android Jetpack 导航:一个具有多个导航视图的活动

我正在考虑新的android jetpack 导航最佳实践,每个应用程序中应该只有一个活动。我想使用一个活动在片段中实现以下菜单,但我对在同一个应用程序中实现多个菜单时的最佳实践是什么非常不安全。

BottomNavigationView参考回购):

截屏:
底部导航视图

DrawerLayout(参考回购):

截屏:
在此处输入图像描述

考虑到来自谷歌的这些示例,对于如何使用最佳实践在一个活动中实现两个视图没有明确的答案,因为每个示例仅分别为其应用程序使用一种形式的导航视图DrawerLayout,或者BottomNavigationView

问题是: 1. 为不同的片段使用不同的导航视图制作活动的最佳实践是什么?例如,几个片段使用DrawerLayout,而其他片段使用BottomNavigationView. 2. 如果想在查看认证视图和登录时同时隐藏 theDrawerLayout和 the 并在认证时显示它们怎么办?BottomNavigationView

0 投票
5 回答
7571 浏览

android - 导航组件:IllegalStateException 片段未与片段管理器关联

我正在使用导航组件版本2.1.0-rc01,我使用在 3 个屏幕之间来回导航

Navigation.findNavController(it).navigate(R.id.action_participants)

第二次通过相同的屏幕后,我可以看到第二个片段,但我收到一个异常。我在 FragmentManager 上启用了日志,似乎有一个未附加的相同片段的差异实例,导致错误

关于导航组件为什么要创建另一个未附加的片段实例的任何想法?是否有任何解决方法来获取附加的片段?

0 投票
3 回答
2862 浏览

android - NavController 在方向更改时崩溃

我不确定我在这里做错了什么。简单的设置,带有由内部底部栏控制的片段的单个活动,到目前为止一切都很好。开始片段有一个按钮,里面应该导航到另一个片段。

这是我的片段类中按钮的 onclicklistener:

这是我在 navigation.xml 中的操作:

导航有效,但我得到了标准

当我在旋转屏幕、拆分应用程序或有时看似随机的情况下单击按钮时出现错误。好像和配置变化有关?

编辑:我也尝试过使用

与上述相同的问题。

检查我是否实际上在同一个片段中,正如一些为有相同异常(但出于不相关原因)的用户所建议的那样,例如:

也没有帮助。

0 投票
2 回答
4436 浏览

android - Jetpack 导航组件在使用可为空参数加载起始目的地时引发 IllegalStateException

我向我的起始目的地添加了一个可为空的参数:

但是当我加载我的应用程序时,我得到以下异常:

而异常是由 MyStartFragment 中的这段代码触发的:

这是 MyDataObject 的代码:

我不明白的是我的起始目的地没有得到导航控制器正确传递的参数。我在这里错过了什么吗?

0 投票
1 回答
60 浏览

android - 在 popUpTo 的帮助下使用导航组件导航片段

我有三个片段Fragment1 -> Fragment3 -> Fragment4,所以如果我单击Fragment4中的后退按钮,我需要使用导航组件转到Fragment1popUpto ,我看到了,但我不明白。

你能告诉我我做错了什么吗?

我已经使用popUpTo了财产,但这不起作用

没有任何反应,它会进入Fragment4 -> Fragment3 -> Fragment1

0 投票
1 回答
588 浏览

android - Fragment Recreation 导致 Observer 使用 Androidx Navigation 库触发 onChanged()

问题:

在使用Navigation库时,我观察到当我导航回上一个片段时,它会重新创建片段并因此重新注册我的所有再次Observers触发OnChanged()

Snackbar如果我正在寻找没有更多数据存在或没有与服务器的 Internet 连接,我有一个显示一些错误消息的示例:

上述代码的来源在这里

在来回导航SnackBar时,每次都会弹出,而且每次我改变方向或旋转我的设备时都会弹出。

我的架构在导航图中Activity有 一个startDestinationas my和一个as 。或者一个简单的 on将我返回到 my然后重新创建片段,从而重新注册所有 my再次触发并且当为 false时弹出ListFragmentDetailFragmentdestinationSupportNavigationUpOnBackPressedDetailFragmentListFragmentObserversOnChanged()SnackBarnoMoreDataPresent LiveData

现在我从这里尝试了解决方案,但不幸的是,它不起作用

我也尝试过将我的活动切换LifecycleOwner到我的活动,但这也不起作用。尝试移动ViewModelProviders.oftoOnCreateonActivityCreated- 不起作用

请提出更正或任何想法,以防止在导航和方向更改后弹出 SnackBar。

脚注

我经历了这些问题:

这是我的完整源代码

0 投票
1 回答
825 浏览

android - 我可以同时使用 setupWithNavController 和 setOnNavigationItemSelectedListener

我有一个带有 5 个项目和片段的 BottomNavigationView 活动来显示页面,我将 NavController 设置如下: NavigationUI.setupWithNavController(mBottomNavigationView, navController);

但是在某些场景中底部导航中有一个项目会打开另一个活动。

我尝试添加 setOnNavigationItemSelectedListener 并处理它,但是其他项目的导航不起作用。

谁能帮我 ?

0 投票
1 回答
43 浏览

android - 导航组件问题和 TextInputLayout 错误

我正在使用Navigation我的应用程序中的组件来创建入职流程。介绍Fragment需要有一个透明status bar的,以便背景图像覆盖整个屏幕,而登录fragment将有一个可见的status bar. activity我使用的主机具有android:fitsSystemWindows设置false为以及介绍片段,而其余主机具有它true。在登录屏幕中,我有 2 个TextInputLayout我想在其中显示错误消息。这是将android:fitsSystemWindows父级设置为 false 时的奇怪部分,TextInputLayout错误消息未显示,而如果我将其更改为 true 则会显示。虽然我需要保持它为假,以免破坏我的介绍 UI。

您对如何解决此问题以及我做错了什么有任何建议吗?