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

android - 如何在 NavHostFragment 中检索当前片段?

我试图在新的导航组件中找到一种方法,但我没有找到任何相关信息。

我的当前目的地是:

但我无法获得对显示片段的任何引用。

0 投票
6 回答
19395 浏览

android - 与 Android 架构导航等效的 startActivityForResult()

我有一个带有 3 个屏幕的工作流程。从“屏幕 1”到访问“屏幕 2”,用户必须接受我在图片中称为“模态”的某种条款和条件。但他只需要接受一次这些条件。下次他在第一个屏幕时,他可以直接进入屏幕 2。用户可以选择不接受条款,因此我们返回“屏幕 1”,不要尝试进入“屏幕 2”。

应用工作流程

我想知道如何使用新的导航组件来做到这一点。

以前,我会做什么:

  • 在屏幕 1 上,检查用户是否必须接受条件
  • 如果否,则启动“屏幕 2”活动
  • 如果是,则使用startActivityForResult()并等待模态的结果。将条款标记为已接受。启动“屏幕 2”

但是有了导航图,就没有办法启动一个Fragment来获取结果。

我可以在“模态”屏幕中将条款标记为已接受,然后从那里启动“屏幕 2”。问题是要访问屏幕 2,我需要进行网络请求。我不想复制对 API 的调用并在“屏幕 1”和“模态”中处理其结果。

有没有办法使用 Jetpack 导航从“模态”返回到“屏幕 1”并提供一些信息(用户接受条款)?

编辑:我目前通过使用 Yahya 在下面建议的相同流程来解决它:仅将 Activity 用于模态并startActivityForResult从“屏幕 1”使用。我只是想知道我是否可以继续在整个流程中使用导航图。

0 投票
2 回答
1943 浏览

android - 资源目录导航无效

添加导航目录时显示错误无效资源目录。

处理命令“~/Android/Sdk/builds-tools/27.0.3/aapt”以退出值 1 结束。

构建.gradle

我在 res/navigation/nav_graph.xml 目录下创建了导航文件

0 投票
4 回答
9090 浏览

android - 使用导航组件时如何设置对话框的目标片段

我正在使用 的片段childFragmentManager内或在 Activity内显示一个对话框supportFragmentManager,在此过程中我想设置目标片段,如下所示:

但是在运行该代码时,我得到了错误:

java.lang.IllegalStateException: Fragment TextSearchDialogFragment{b7fce67 #0 0} 声明的目标片段 PlaceSearchFragment{f87414 #0 id=0x7f080078} 不属于这个 FragmentManager!

我不知道如何访问FragmentManager用于管理片段显示的导航组件,是否有解决方案?

0 投票
9 回答
37402 浏览

android - 如何使用导航架构组件从片段中获取结果?

假设我们有两个片段:MainFragmentSelectionFragment。第二个是为选择一些对象而构建的,例如一个整数。从第二个片段接收结果有不同的方法,如回调、总线等。

现在,如果我们决定使用导航架构组件来导航到第二个片段,我们可以使用以下代码:

wherebundleBundle(当然)的一个实例。如您所见SelectionFragment,我们无法访问可以放置回调的位置。问题是,如何使用导航架构组件接收结果?

0 投票
3 回答
14345 浏览

android - Android Studio 3.2 Preview 中的导航预览不可用

我有兴趣尝试 Android Studio 中显示的导航图。但是在我导入谷歌示例后预览不可用

我使用了 Android Studio 3.2 Preview Canary 16

在此处输入图像描述

2018 年 10 月 6 日更新:

即使我重建项目它也不起作用。但是如果添加新屏幕,它会在预览模式下显示新屏幕

在此处输入图像描述

0 投票
1 回答
1587 浏览

android - 带有参数或操作的目标必须具有“名称”或“标识”属性

我使用 Android 导航组件创建了一个全局操作,编译代码时出现以下错误

错误:

0 投票
1 回答
4566 浏览

android - Android Jetpack Navigation:如何在 OnNavigatedListener 中获取目的地的片段实例?

我在 android 开发中使用 Jetpack 导航组件(一个活动,许多片段)。

我想在OnNavigatedListener下面获得目的地的片段实例。

可能吗?

更新:场景

我想在每次导航的活动中获取片段的属性(或方法的返回值)。

例如,

0 投票
6 回答
7930 浏览

android - 如何获取 NavHostFragment

我正在将 Android 的导航架构组件集成到我的应用中。我在将数据从活动传递到片段的开头时遇到了一些问题,所以我遵循了这个答案:Navigation Architecture Component-Passing argument data to the startDestination

逻辑对我来说似乎是合理的,但我正在努力确定如何实际获取 NavHostFragment。Elliot Shrock 使用了这条线——

val navHostFragment = navFragment as NavHostFragment

但我还没有找到有效的 Java 等价物。我尝试通过使用获取我的 navHost 的片段 getSupportFragmentManager().findFragmentById(R.id.[mynavhostid])

但此命令返回 null。有任何想法吗?

0 投票
2 回答
9187 浏览

android - 带有查询参数的 Jetpack Navigation 深层链接

似乎无法在新的 Jetpack 导航库中处理带有查询参数的深层链接。如果您将以下内容放入 navigation.xml: <deepLink app:uri="scheme://host/path?query1={query_value}" />那么深度链接不会打开片段。

经过一番挖掘,我发现罪魁祸首可能在 NavDeepLink 中,因为它将 url 从 xml 转换为 Pattern 正则表达式。看起来问题是一个没有被排除的问号。

我写了一个失败的测试:

为了使测试通过,我所要做的就是逃避?如下:

我是否遗漏了一些非常基本的东西来将查询值传递给我的片段,还是目前不支持此功能?