问题标签 [android-navigation-graph]

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 回答
107 浏览

java - 我是否必须保持导航图中的片段 ID 与菜单项 ID 相同?

我试图了解在 android studio 3.6.3 中创建的默认导航抽屉的代码结构。在导航抽屉中,当单击菜单项时,它会显示相应的片段布局。我试图了解机制。我发现导航图片段 id 名称和菜单项 id 名称都是相同的。我首先更改了菜单项 ID 名称并使用 (R.id.menu_id) 在主要活动中调用。当我启动应用程序时,导航菜单不起作用。然后我将菜单 ID 名称重命名为原样,并更改了片段的 ID 名称。但不幸的是,启动应用程序后,菜单无法正常工作。当我保持两个名称相同时,菜单有效。

内部(资源/导航/mobile_navigation.xml)。 mobile_navigation.xml

内部(资源/菜单/activity_main_drawer.xml) activity_main_drawer.xml

内部 (java/MainActivity.java) MainActivity.java

需要有人指导我是否理解错误。

0 投票
1 回答
164 浏览

android - 导航图中身份验证后如何清除片段?

我正在使用导航图,其中我有两个片段(登录片段主片段),登录片段用于对用户进行身份验证,主片段正在显示数据列表。成功验证后,我可以导航到主片段但是当我点击后退按钮,应用程序既没有关闭也无法导航回登录片段。这是我的导航图代码

成功认证后,我希望用户导航到主片段。因此,如果用户单击后退按钮,应用程序将关闭,而不会导航回登录片段。这是我的登录片段代码

我应该如何解决这个问题?谁能告诉我?

0 投票
0 回答
99 浏览

android - 如何检测导航图中的过渡结束?

我在我的应用程序中有以下过渡,但由于大量加载到 recyclerview 和其他图形元素中,到新目的地的动画滞后。

我曾尝试在 recyclerview 上加载元素时使用 postDelayed,但在某些设备上,您会觉得在转换后等待,而在其他设备上,转换需要更长的时间(取决于设备)。所以我登陆了700ms,但这对所有人都不好......

有没有一种方法(即回调)我可以检测到过渡何时实际确认结束。

我的代码非常简单,当单击一个片段中的按钮时,我称之为:

简单地说,我怎样才能检测到这个导航实际上已经结束,并且设置了一个我可以在另一个 Fragment 中观察到的 viewModel 共享,所以可以以一种理智的方式触发元素的加载?

RG

0 投票
1 回答
5935 浏览

android - Android:没有通过 app:startDestination 为 xxx:id/nav_graph 定义起始目的地

即使我使用过,在 nav_graph 中,我也会收到警告

在此处输入图像描述

项目级等级:

应用级等级:

MainActivity.kt

nav_graph.xml

activity_main.xml

我面临的错误:

0 投票
1 回答
4792 浏览

android - 在 safeArgs 中将 ArrayList 作为参数传递

我试图ArrayList<String>在使用 safeArgs 时将 an 作为参数传递。但是当我从可序列化和构建列表中选择 ArrayList 时,它会抛出这些异常

我知道我必须为 ArrayList 设置 dataType,但在从导航图屏幕设置 safeArgs 时,我无法执行此操作,也没有选项。

在导航图 XML 中,代码生成为

有没有办法在导航图的 XML 中声明数据类型?

0 投票
0 回答
285 浏览

android - Android NavController 在不同导航流/图表之间共享片段的最佳实践

NavController在单个活动应用程序中使用组件。每个屏幕都是不同的片段。应用程序中的每个主要 UI 流都在不同的导航图中分开(我不希望有一个包含所有导航的大型单个 xml)。

然而,一些片段在多个导航流之间是常见的。例如,我有自定义错误片段来显示错误,而其他不同的片段可以显示该错误片段。所以这个片段应该可以从所有的导航图中访问。一种解决方案是将它添加到每个导航图,但这会使我的 xml-s 膨胀,因为我有其他常见的片段,它们将被复制粘贴到所有导航图 xml-s 中,这似乎是个坏主意。

有没有最佳实践如何解决这个问题?

我正在考虑添加 Kotlin 扩展方法,NavController这些方法将以编程方式将常用片段添加到当前导航图中。

0 投票
1 回答
24 浏览

android - 重新加载片段时位图消失

重新加载片段时,构成片段背景的位图会消失。如果用户转到另一个片段并返回到这个片段,它就可以正常工作。使用 Android Navigation 完成重新加载 - 使用对同一片段的导航调用。图形代码用于降低位图大小以减少堆空间使用。

这是片段代码:

这是XML

0 投票
1 回答
411 浏览

android - 是否可以通过导航组件深层链接传递 Parcelable 对象?

我使用导航组件并使用深度链接来传递值或更改页面我可以传递原始对象和枚举对象我从不尝试通过深度链接传递 Parcelable 对象是否可能?

0 投票
1 回答
897 浏览

android - 来自通知的深度链接 - 如何通过后台堆栈传递数据?

在我的应用程序中,用户可以选择一个类别,然后在该类别中选择一个项目以最终查看项目详细信息。标准/正向流程是:

SelectCategoryFragment-> SelectItemFragment->ViewItemDetailsFragment

在选择一个类别时,selectedCatId通过Bundlefrom SelectCategoryFragmentto传递SelectItemFragment

SelectItemFragment然后将使用该getArguments().getLong(ARG_CATEGORY_ID)值来查询和显示所选类别中的适当项目。

这很好用。但是我现在正在尝试在用户点击通知时实现深度链接,将他们直接跳转到ViewItemDetailsFragment可以将他们带到SelectItemFragment, 然后SelectCategoryFragment.

我的问题是,如上所述,SelectItemFragment取决于ARG_CATEGORY_ID传递给它的参数以检索/显示其数据。我已经阅读了深度链接嵌套导航图,但真的不知道如何通过ARG_CATEGORY_ID深度链接/后台堆栈传递。

ViewItemDetailsFragment有没有一种整洁的方法可以SelectItemFragment在用户按下时传递数据?

0 投票
1 回答
1026 浏览

android - 如何禁用汉堡图标变成箭头(导航组件)

请帮帮我。
简介:我使用导航组件,单活动模式,通过底部导航菜单切换 3 个片段。我也有抽屉导航。
所有片段都处于同一级别(都是根,直接从bottm nav访问)
事情应该如何:对于所有片段,抽屉必须有一个带有汉堡图标的工具栏。
问题:当应用程序启动时,主页片段显示抽屉的标准汉堡图标,这没关系。但是当我切换到任何其他片段时,抽屉图标变成箭头图标。此外,当按下箭头时,抽屉从左侧滑动。这意味着它仍然可以用作显示抽屉菜单的按钮,但只有图标更改
问题: 从底部导航菜单切换到另一个片段时,如何禁用将汉堡图标转换为箭头图标?
文件:导航图:

活动: