问题标签 [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 投票
1 回答
1925 浏览

android-architecture-components - Android导航库不打开深层链接

无法打开深层链接 URL。这是我使用的代码

我已使用意图打开深层链接

依赖

0 投票
8 回答
70555 浏览

android - 如何以编程方式更改导航图的起始目的地?

基本上,我有以下导航图:

在此处输入图像描述

我想在到达导航图中的起点fragment 2后将其更改为右侧(以防止fragment 1在按下后退按钮时返回 - 就像启动屏幕一样)。

这是我的代码:

但是,显然它不起作用,fragment 1按下后退按钮后它又恢复了。

我做错了吗?还有其他解决方案吗?

0 投票
5 回答
18473 浏览

android - 导航架构组件 - 启动画面

我想知道如何使用导航架构组件实现启动画面。

直到现在我有这样的东西

在此处输入图像描述

用户必须ProfileFragment第一次设置他的个人资料,并且可以从 编辑他们的个人资料ChatFragment

我的问题是我不知道如何SplashFragment在导航后从堆栈中删除。我看过条件导航,但不太明白。

0 投票
2 回答
5060 浏览

android - 如何为 Android 导航控制器编写测试

我正在使用当前处于 alpha 阶段的新导航控制器。它工作正常,但我找不到任何文档或示例应用程序来查看测试是如何完成的。谷歌还发布android.arch.navigation:navigation-testing了用于测试导航的库,但同样没有文档。

任何帮助或建议将不胜感激。

0 投票
4 回答
16663 浏览

android - Jetpack 导航:操作栏中的标题和后退/向上箭头?

我已经安装了最新的金丝雀版本的 Android Studio,并按照这个(https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing)指令来实现一个简单的两页导航。基本上 page1 有一个按钮,当它被点击时,应用程序会显示 page2。

它可以工作,但有一个问题......它似乎没有自动对操作栏做任何事情。导航库是否应该在操作栏上自动显示上/后箭头和“标签”属性?还是我应该像以前一样手动完成所有工作?我想在显示 page2 时在操作(工具)栏上显示后退箭头和“详细信息”。

在按钮上单击第 1 页。

主要活动 XML。默认情况下,它是默认的操作栏,我已将其替换为工具栏。没有区别。

导航图 XML。

0 投票
3 回答
10351 浏览

android - 带有架构组件的多模块导航

所以我在我当前的应用程序中为我的模块设置了这个结构。

应用模块结构

我还没有找到任何关于多模块导航的官方文档,但是我找到了这篇文章,所以这就是我的 gradle 文件的样子:

功能 1 - 细节

功能 2 - 细节

特色 3 - 细节

这是我的导航图:

功能 1 - 细节

功能 2 - 细节

特色 3 - 细节

所以一切都适用于这种设置,但这里的问题是要将模块连接到另一个模块,我们必须将另一个功能添加为当前功能的依赖项。就像我的情况一样,功能 1 - 详细信息可以转到功能 2 - 详细信息,反之亦然,这样做给了我在 gradle 中的循环依赖。

还有其他方法可以进行多模块导航吗?我试过使用深层链接,但无济于事。

任何帮助,将不胜感激!谢谢!

0 投票
2 回答
6416 浏览

android - 将导航架构组件与导航抽屉一起使用

我正在尝试将导航架构组件(NavHostFragment) 与导航抽屉(widget.NavigationView) 一起使用。我收到以下两个错误之一。

1) 多次从抽屉中选择一个项目时可能会发生这种情况:

java.lang.IllegalArgumentException: navigation destination app.myDomain.navdrawertrials:id/action_rootFragment_to_settingsFragment is unknown to this NavController

2) 这发生在我的真实代码库中,该代码库的设置方式与 AFAICT 下面的简化示例相同。为什么不设置当前导航节点?

java.lang.IllegalStateException: no current navigation node

简化代码

主要活动

main_activity.xml

nav_drawer_menu.xml

main_activity_content.xml

nav_graph.xml

root_fragment.xml(其他节点是类似的空片段,只有一个标签)

0 投票
0 回答
1449 浏览

android - Android架构导航popBackStack抛出IllegalArgumentException“回栈为空”

我有一个使用新导航库的应用程序。我在 NavController 上附加了一个监听器,当我浏览应用程序时,它看起来是这样的:

  1. main_fragment
  2. authentication_subgraph
  3. loading_fragment
  4. set_username_fragment来电popBackStack(R.id.authentication, true)
  5. loading_fragment作为上面弹出回栈的一部分被移除。
  6. main_fragment
  7. squad_fragment

在某些通过 Crashlytics 向我报告的情况下,我看到来自squad_fragmentthrows anIllegalArgumentException的调用,调用看起来像:

这应该并且在我运行的每个测试中都简单地弹出squad_fragment并给我留下main_fragment,但在某些情况下(昨晚 20 次)我在这里遇到了一个异常,说后面的堆栈是空的。怎么会这样?有什么我做错了吗?

更新

我终于能够复制这个问题了。main_fragment当我从应用程序的后台导航到任何地方,做一堆其他事情,然后从最近列表返回应用程序时,这似乎会发生。导航库似乎没有恢复后台堆栈?我现在使用的是 1.0.0-alpha02 版本。看来,如果popBackStack()我没有调用它,而是调用navigateUp()它有效,但这让我感到担忧,因为我目前退出身份验证子图的方式是通过调用popBackStack(R.id.authentication, true)以返回触发身份验证流的任何片段。这最终将以相同的方式中断。

查看 NavController 中的代码,似乎返回堆栈已保存和恢复。所以我不明白为什么后台堆栈返回为空。此外,NavHostFragment 似乎正在备份 NavController 状态以及恢复它,所以我不知道为什么我的 backstack 是空的。

0 投票
1 回答
1249 浏览

android - Android Jetpack Navigation 嵌套选项卡向后导航的奇怪行为

所以我正在尝试使用 BottomNavigationView 的 Jetpack 导航组件。我创建了两层BottomNavigationView,结构如下:

  • MainActivity(带有 nav_host_fragment、navigation_graph、bottom_navigation)
    • 片段A
    • 片段B
    • FragmentC(带有nested_nav_host_fragment、nested_navigation_graph、nested_bottom_navigation)
      • 片段CA
      • 片段CB
      • 片段CC

我向前导航没有问题,但我无法正确向后导航。例如,当我从 A -> B -> C 导航并在 C 中导航 CA -> CB -> CC,然后单击返回按钮或调用 navControler 时,它应该从 CC -> CB -> CA -> B -> A,但它直接去了A。

最小的演示项目可以在这里找到,希望有人能提供帮助,谢谢。

0 投票
4 回答
12036 浏览

android - 带参数的导航组件 .popBackStack()

我有两个片段。SecondFragmentThirdFragment。实际上,我使用导航组件在片段之间传递值。像这样:

第二片段

这是我从ThirdFragment读取值的方式:

它工作正常。现在我的堆栈是这样的:

使用新的导航组件将值从打开的ThirdFragment传递到前一个SecondFragment有任何选项吗?(当 ThirdFragment 完成时)

我知道 onActivityResult,但如果 Nav.Component 提供的解决方案比我想要的更好。

谢谢!