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

android - 使用 Android Jetpack Navigation 预加载片段以实现平滑过渡

Fragments是否可以使用 Android Jetpack的导航架构组件预加载某些内容以获得平滑过渡?

如果没有预加载,我将永远无法在第一次navigate()通话时获得平滑过渡(即使在高端设备上也是如此)。我目前在我app:enterAnim的.app:exitAnimnav_graph.xml

我正在尝试像在 Telegram 应用程序中那样完成平滑的过渡(我认为他们正在预加载所有内容,并且只是以Fragments类似的方式制作动画Views)。

是否有一些隐藏的 XML 属性app:preload="true"

我不仅要求对我的问题提供全面的答案 - 也欢迎进行一些小的优化!

我走了多远:

anim_nav_enter.xml

anim_nav_exit.xml

anim_nav_pop_enter.xml

anim_nav_pop_exit.xml

BaseFragment.kt

0 投票
0 回答
814 浏览

android - 导航组件的默认动作动画

我正在寻找一种方法来使用Navigation component为片段中的操作声明默认动画。也许还没有实现这种行为的实现?

这是我要删除重复代码的代码:

0 投票
1 回答
1533 浏览

android - 协调嵌套导航控制器中的后退按钮所有权

我有一个显示应用程序一般信息的主屏幕,以及一个带有附加信息的底部表。

如果用户单击抽屉式导航菜单上的某些内容,选择新屏幕,则主屏幕内容可能会发生变化。

当用户点击更多数据时,主屏幕上的底部工作表也会发生变化。

所以我基本上在底部工作表中有一个嵌套导航,它位于主屏幕的主导航内部

我的问题是,在使用新的 Android Architecture ComponentsNavigation Controller时,有一个app:defaultNavHost="true"选项会拦截后退按钮。

这种对后退按钮的自动拦截使我的用户案例非常复杂。我想要的是当用户在主屏幕中时,底部工作表可以控制后退按钮,并且当用户交换主屏幕时,主屏幕控制后退按钮。

有没有办法以app:defaultNavHost编程方式控制,所以嵌套Navigation Controllers可以共存并协调后退按钮的所有权?

0 投票
1 回答
9590 浏览

android - Android导航组件不显示片段

我正在尝试在现有应用程序中实现新的 Android 导航组件。我有 2 个片段,除了它们的名称外,它们是相同的。当我将 startDestination 设置为 fragment2 时,该片段似乎正确显示。当 startDestination 设置为 fragment1 时,我看不到膨胀的视图,但我确实看到了“Fragment 1 created”toast。

我做错了什么?

nav_graph.xml

MainActivity 布局:

片段1布局:

依赖项:

0 投票
1 回答
322 浏览

android - 如何在嵌套导航控制器片段之间传递事件/数据

我正在计划这样的视图层次结构:

在此处输入图像描述

基本上主片段将能够触发底部工作表导航控制器内的导航,底部工作表片段也将能够触发底部工作表导航控制器内的导航并将事件/数据发送到主片段。

例如,假设 Main Fragment 有一个项目网格,而 Bottom Sheet Fragment 显示最后单击的项目详细信息。用户可能会单击底部工作表片段中详细信息内的按钮,比如说“立即订购”按钮,现在必须将这个事件执行到主片段。请不要拘泥于这个特定的用例,这只是我为了说明需要而制作的一个例子。

我的问题是如何克服 Android Jetpack 中导航控制器提供的分离?有很多关于如何使用公共Activity等来管理Fragments共享同一个屏幕之间的通信的文档,但是现在有新的导航控制器带来了新的抽象分离Fragment处理,所以我不太确定如何进行。

我想过也许使用 aSingleton来传递事件/数据,也许在LiveData里面,但我认为可能有一些更优雅的解决方案。

0 投票
4 回答
15813 浏览

android - 活动结果后此 NavController 未知的导航目的地

我正在使用导航控制器 1.0.0alpha05,它运行良好,但是当我在活动结果后执行导航操作时,我正在努力解决这个可怕的错误。

我有一个单一的活动/多个片段结构,特别是一个带有项目列表的片段和另一个带有添加新项目的表单的片段。

当我添加另一张没有任何图片的图片时,它正在工作并返回带有项目列表的前一张,但是当我拍摄一些照片时,我在导航过程中出现异常。

原因:java.lang.IllegalArgumentException:导航目的地 XX 对此 NavController 是未知的

错误日志

包含操作的表单片段的导航图:

带有安全参数的操作调用代码

谢谢你的时间

0 投票
0 回答
45 浏览

android-fragments - Android、NavigationComponent、Fragment之间的通信

我正在开发使用 Android NavigationComponent 的正在进行的项目,并且在弄清楚如何从我显示的片段中获取结果时遇到了麻烦。如果我要使用 FragmentTransaction 显示片段,我会使用这种方法Android - getTargetFragment 和 setTargetFragment - 它们用于什么

0 投票
1 回答
4766 浏览

android - 不要使用 Android 导航组件在 backstack 中包含片段

我正在开发一个用户可以创建事件的应用程序。我想这样做,以便在他们创建事件之后,后退按钮不会将他们带到创建流程,而是在创建流程之前进入屏幕。就像是:

主屏幕 -> 创建流程 -> 事件摘要

然后,如果他们按下后退按钮,我希望它离开

事件摘要(返回按钮)主屏幕

我已经接近:

这很好用,它会弹出到主屏幕。我还没有找到很多关于这些弹出行为选项的文档

我对这个解决方案的问题是,据我了解,它会弹出,直到我们到达 MainScreen,无论用户如何创建事件。我更喜欢在创建流程之前弹出到屏幕的解决方案,允许创建流程的多个入口点。

0 投票
3 回答
14698 浏览

android - 导航组件,控制何时显示汉堡包或返回图标

我有以下活动

如您所见,它与导航图相关联,我正在使用导航抽屉。当我浏览抽屉中的项目时,我想保留汉堡图标,并且仅在单击片段或弹出窗口中的项目时将其更改为上/后退按钮,并确保系统的行为反映了什么用户期望基于显示的图标。那可能吗

0 投票
3 回答
2507 浏览

android - Navigation Arch 组件:为深度链接传递占位符参数

我正在尝试使用新的导航组件 API v1.0.0-alpha05 实现深度链接功能,但遇到了问题。

使用 Android Studio 3.3 金丝雀 7

我的navigation_graph.xml 的一部分

AndroidManifest.xml 包含:

我正在测试我的深层链接adb shell am start -a android.intent.action.VIEW -d "notesapp://notes/2" com.myapp.notes

两者noteId都不存在NoteDetailFragmentArgs.fromBundle(arguments).noteIdor (在两种情况下都返回arguments?.getInt("noteId", 0)默认值)0

打印出 Bundle 表明它在那里:

[{android-support-nav:controller:deepLinkIntent=Intent { act=android.intent.action.VIEW dat=notesapp://notes/2 flg=0x1000c000 pkg=com.mynotes.notes cmp=com.mynotes.notes.presentation.MainActivity }, noteId=2}]

如果深度链接 uri 为 http://www.mynotes.com/notes/2

如何访问noteIdwhen deeplinking?谢谢!