问题标签 [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.
android - 如何在 NavHostFragment 中检索当前片段?
我试图在新的导航组件中找到一种方法,但我没有找到任何相关信息。
我的当前目的地是:
但我无法获得对显示片段的任何引用。
android - 与 Android 架构导航等效的 startActivityForResult()
我有一个带有 3 个屏幕的工作流程。从“屏幕 1”到访问“屏幕 2”,用户必须接受我在图片中称为“模态”的某种条款和条件。但他只需要接受一次这些条件。下次他在第一个屏幕时,他可以直接进入屏幕 2。用户可以选择不接受条款,因此我们返回“屏幕 1”,不要尝试进入“屏幕 2”。
我想知道如何使用新的导航组件来做到这一点。
以前,我会做什么:
- 在屏幕 1 上,检查用户是否必须接受条件
- 如果否,则启动“屏幕 2”活动
- 如果是,则使用
startActivityForResult()
并等待模态的结果。将条款标记为已接受。启动“屏幕 2”
但是有了导航图,就没有办法启动一个Fragment来获取结果。
我可以在“模态”屏幕中将条款标记为已接受,然后从那里启动“屏幕 2”。问题是要访问屏幕 2,我需要进行网络请求。我不想复制对 API 的调用并在“屏幕 1”和“模态”中处理其结果。
有没有办法使用 Jetpack 导航从“模态”返回到“屏幕 1”并提供一些信息(用户接受条款)?
编辑:我目前通过使用 Yahya 在下面建议的相同流程来解决它:仅将 Activity 用于模态并startActivityForResult
从“屏幕 1”使用。我只是想知道我是否可以继续在整个流程中使用导航图。
android - 资源目录导航无效
添加导航目录时显示错误无效资源目录。
处理命令“~/Android/Sdk/builds-tools/27.0.3/aapt”以退出值 1 结束。
构建.gradle
我在 res/navigation/nav_graph.xml 目录下创建了导航文件
android - 使用导航组件时如何设置对话框的目标片段
我正在使用 的片段childFragmentManager
内或在 Activity内显示一个对话框supportFragmentManager
,在此过程中我想设置目标片段,如下所示:
但是在运行该代码时,我得到了错误:
java.lang.IllegalStateException: Fragment TextSearchDialogFragment{b7fce67 #0 0} 声明的目标片段 PlaceSearchFragment{f87414 #0 id=0x7f080078} 不属于这个 FragmentManager!
我不知道如何访问FragmentManager
用于管理片段显示的导航组件,是否有解决方案?
android - 如何使用导航架构组件从片段中获取结果?
假设我们有两个片段:MainFragment
和SelectionFragment
。第二个是为选择一些对象而构建的,例如一个整数。从第二个片段接收结果有不同的方法,如回调、总线等。
现在,如果我们决定使用导航架构组件来导航到第二个片段,我们可以使用以下代码:
wherebundle
是Bundle
(当然)的一个实例。如您所见SelectionFragment
,我们无法访问可以放置回调的位置。问题是,如何使用导航架构组件接收结果?
android - Android Studio 3.2 Preview 中的导航预览不可用
我有兴趣尝试 Android Studio 中显示的导航图。但是在我导入谷歌示例后预览不可用
我使用了 Android Studio 3.2 Preview Canary 16
2018 年 10 月 6 日更新:
即使我重建项目它也不起作用。但是如果添加新屏幕,它会在预览模式下显示新屏幕
android - 带有参数或操作的目标必须具有“名称”或“标识”属性
我使用 Android 导航组件创建了一个全局操作,编译代码时出现以下错误
错误:
android - Android Jetpack Navigation:如何在 OnNavigatedListener 中获取目的地的片段实例?
我在 android 开发中使用 Jetpack 导航组件(一个活动,许多片段)。
我想在OnNavigatedListener
下面获得目的地的片段实例。
可能吗?
更新:场景
我想在每次导航的活动中获取片段的属性(或方法的返回值)。
例如,
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。有任何想法吗?
android - 带有查询参数的 Jetpack Navigation 深层链接
似乎无法在新的 Jetpack 导航库中处理带有查询参数的深层链接。如果您将以下内容放入 navigation.xml:
<deepLink app:uri="scheme://host/path?query1={query_value}" />
那么深度链接不会打开片段。
经过一番挖掘,我发现罪魁祸首可能在 NavDeepLink 中,因为它将 url 从 xml 转换为 Pattern 正则表达式。看起来问题是一个没有被排除的问号。
我写了一个失败的测试:
为了使测试通过,我所要做的就是逃避?如下:
我是否遗漏了一些非常基本的东西来将查询值传递给我的片段,还是目前不支持此功能?