问题标签 [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 回答
34 浏览

android - 将 viewmodal livedata 发送到另一个具有 listadapter 的片段

我有两个片段。一个理想的活动,我使用 nav Host 从第一个片段导航到另一个片段。到目前为止,我还没有数据库。我使用改造在存储库中进行调用,将结果作为密封类的 OutPut 返回,我得到了第一个片段 ViewModel 的 API 调用结果,我可以在第一个片段中观察它。现在我如何将它发送到第二个片段或第二个 ViewModel。这里最好的解决方案是什么?我不想实现数据库。我不想通过为第二个 ViewModel 创建存储库并调用相同的方法来进行另一个调用。如果我正确的话,我还想观察我可以通过 DiffUtil 执行的列表中的任何更改?在这种情况下,最好的解决方案是什么?下面是我的代码。如何在第二个片段适配器中发送 wordResponse 实时数据并观察变化。

我的仓库

}

我的视图模型

}

0 投票
1 回答
1433 浏览

android - 带参数的多模块 android 架构中的导航

由于导航文件位于 app 模块中,因此功能模块将无法访问 Args 文件。有什么解决方法吗?

示例:如果我有一个像这样接受电子邮件和密码的片段

我会生成一个可用于导航的 SampleFragmentArgs

但是我只能从应用程序模块而不是功能模块中使用它

0 投票
1 回答
247 浏览

android - 如何将 SafeArgs 与在导航图中多次出现的目的地一起使用?

我使用 SafeArgs 很好地设置了我的应用程序的主导航。这是我的nav_graph.xml

而且,使用 SafeArgs,我可以愉快地使用以下命令从Fragment2导航到Fragment3

但是,我随后需要从通知中添加深度链接功能(有一个带有参数的 backstack ,如此处所述),所以我在nav_graph.xml<navigation />的末尾添加了一个子元素——它变成了:

请注意,该文件现在包含两次出现的org.example.Fragment2.

这给我带来了一个新问题,即第二次出现org.example.Fragment2(即fragment2Notif)导致原来的Fragment2Directions.fragment2ToFragment3(...)方法不再可用。

它已被替换为Fragment2Directions.fragment2NotifToFragment3Notif(...)在我的应用程序的通知部分中可以正常工作,但是当从我的应用程序的主要部分调用时,如预期的那样,会导致:

IllegalArgumentException:导航目的地 org.example:id/fragment2Notif_to_fragment3Notif 对此 NavController 未知

似乎 SafeArgs 已经覆盖了第一个Fragment2Directions对象,这意味着它拥有的唯一方法是fragment2NotifToFragment3Notif(...).

那么,如何fragment2ToFragment3(...)恢复旧方法呢?

我希望我可以通过将 Fragment2 子类化以使用不同的名称 Fragment2Notif 有效地复制它,然后在我的主导航中使用 Fragment2 并在子导航中使用 Fragment2Notif 来解决问题但是有更优雅/首选的方式吗?

0 投票
3 回答
1589 浏览

android - Error inflating class Fragment, when adding navGraph attribute

I know there are a few questions and answers about this problem, but none of the solutions fixed my problem. I get an

android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class fragment

error, when I add the navGraph attribute with the navigation xml-file.


So here is my activity_login.xml (with the fragment container):


The nav_graph.xml is just as empty as it is generated.


Here are the important dependencies for the fragment:

When I do not include this line app:navGraph="@navigation/nav_graph" in my activity_login.xml -layout, I do not get an error. What's my mistake?

I am using Android Studio 4.1 Canary 10

Please just ask if I need to share more code or information... Thanks in advance and best regards!

0 投票
1 回答
223 浏览

android - 根据用户类型在导航架构组件中设置默认目的地

我正在研究导航组件架构,我在验证用户身份后遇到了如何设置起始目的地的问题,因为我有两种类型的用户:管理员和用户,我让我的应用程序包含 4 个活动 loginActivitysignUpActivity userMainActivity:使用导航组件并包含所有与用户相关的片段和adminMainActivity:使用导航组件并包含与管理员相关的所有片段

我无法弄清楚如何处理这个问题并在登录后按设置默认启动用户或管理员活动
我应该将用户和管理员放在单独的导航图中还是在这种情况下做什么

0 投票
1 回答
3257 浏览

android - 添加到 FragmentContainerView 的视图必须与 Fragment 关联

由于在两个片段之间的工具栏中实现后退按钮存在困难,我决定开始熟悉 Navigation Graph。但我得到一个错误

Views added to a FragmentContainerView must be associated with a Fragment. View android.widget.RelativeLayout{...} is not associated with a Fragment.

这是 .xml 文件,其中包含nav_host_fragment

有可能修复它吗?

0 投票
1 回答
28 浏览

android - 使用导航控制器时如何将操作栏添加到主屏幕?

我正在创建一个项目,我想在其中出现以下现象。第一个活动可以从一个意图启动。当它启动时,它在操作栏上有一个后退按钮。我使用 navcontroller 设置了此活动的更多目的地。我已经用导航控制器设置了动作栏。但它从主屏幕中删除了后退按钮。我应该怎么做才能达到预期的效果?

0 投票
1 回答
129 浏览

android - 使用 NavHostFragment 时从当前 Fragment 返回到替换的 Fragment 的问题

我有三个片段 A、B 和 C。我navHostFragmentMainActivity. 所以应用程序使用 kotlin 扩展函数从 A -> B 开始findNavController().navigate...,然后使用相同的函数从 B 转到 C。到这里为止一切正常。

现在在片段 C 中,我正在使用片段 C 替换不同的元素

list_container替换为someFragment。在此之后,当我按下物理后退按钮时,Fragment C 弹出,我的应用程序转到 Fragment B,而我期望它恢复的内容被替换,list_container即替换前的任何内容。

我也在我的MainActivity

我不确定这里缺少什么。我已经阅读了很多关于 stackoverflow 的解决方案,但没有一个能让我满意。请指导。

0 投票
0 回答
906 浏览

android - 目标片段中未收到 NavDeepLinkBuilder 参数包

我有 2 个导航主机活动 Activity A 和 Activity B,每个都有自己的导航图集。我想从 Activity A 托管的导航图中的 FragmentA 导航到 Activity B 托管的导航图中的 FragmentB,以完成我尝试显式深度链接的操作。但是,无论我如何无法检索 FragmentB 中的参数,它始终是默认值。我正在使用安全参数。我究竟做错了什么?

更新:似乎问题始于无法访问的导航图。仔细查看日志,我意识到 NavController 记录了以下消息

在导航图中找不到目的地 com.myapp.app:id/nav_graph_b,忽略来自 Intent 的深层链接......

导航图由在 setComponentName 中设置的导航主机活动 B 托管。为什么图表无法访问呢?

深层链接

导航图

内部片段B

0 投票
1 回答
851 浏览

android - 如何在 Android 上的 NavigationUI 组件中动态更改默认选项卡

在我的应用程序中,我想显示底部选项卡,当单击这些选项卡时显示一个fragment
为此,我使用BottomNavigationViewNavigationUI组件来显示片段

我的 XML 代码:

我写了下面的代码,用于连接NavigationUiBottomNavigationView

但始终显示默认选项卡的项目 0。

我想写条件并检查一个值,并用这个值设置这个和的默认选项卡NavigationUiBottomNavigationView

我该怎么做?