问题标签 [navigation-architecture]

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 投票
1 回答
942 浏览

android - 使用导航架构时如何设置`setReorderingAllowed`?

在使用导航架构时推迟片段的进入转换时,图中的“主页”片段可见一微秒。谷歌搜索了一下后,文档告诉我设置setReorderingAllowed(true)fragmentManager 以优化此流程。但是,文档不使用导航架构组件。

使用导航架构组件时,我将setReorderingAllowed(true)如何实现它?

0 投票
2 回答
109 浏览

android - Android 导航组件 - 设置 HasOptionsMenu 会使 NavigateUp 按钮无效

我正在使用带有bottomNavigationView. 我已经在我的 AppBar 中配置了MainActivity一个向上导航按钮,当应用程序不在图表的起始位置时会出现一个向上导航按钮。

我已经像这样设置SupportedActionBar和覆盖onSupportNavigateUp

在导航图中,我有一个ProfileSettingsFragment需要菜单选项的目的地。我已经将它们设置为:

菜单选项工作正常,但是,一旦我调用 navigateUp 按钮,该片段就会停止工作setHasOptionsMenu(true)

我究竟做错了什么?在使用导航组件时,在保持 navigateUp 行为的同时在片段上添加菜单选项的正确方法是什么?

0 投票
1 回答
767 浏览

android - 为什么不使用 android 导航组件的后退按钮

这是我的身份验证活动

LoginFragment -> 如果登录成功转到“AcceptCodeFragment”

在 AcceptCodeFragment 返回按钮不起作用。

使用相同视图模型的两个片段。

0 投票
1 回答
742 浏览

android - Koin 共享依赖关系范围为嵌套图

我想知道如何使用 Koin 库正确地确定依赖关系的范围。

由于 Google 推荐单一Activity架构AndroidX Navigation 库已成为一个关键库,可通过轻松交换Fragments.

Gradle一个典型的现代 Android 应用程序在包和/或模块中具有多个功能。
这些功能模块提供了一个可以在根图中用作嵌套图的图。(见图)

功能模块的 Koin 范围

应遵守以下规则:

  • 每层代表一个范围。
  • 内层可以注入外层定义的任何东西。
  • 没有重叠的层不应该能够注入彼此的依赖关系。
  • 离开一个层应该处理它的依赖关系。

更具体地说:

  • FeatureA 可以注入 Activity 和 App 依赖项,但不能注入 FeatureB 依赖项
  • FeatureB 可以注入 Activity 和 App 依赖项,但不能注入 FeatureA 依赖项

如何在 Koin 中实现这一点?

请注意,共享依赖项不仅限于 ViewModel。
我应该能够在我的范围内共享任何任意类。

0 投票
0 回答
212 浏览

android - 使用对话框导航时无法调用 onResume/onPause(BottomSheetDialogFragment)

很抱歉,如果命名不好,但是,有太多东西,所以不得不改变名字。但是我遇到了导航问题。我有一个 nav_graph 如下。

我正在使用它导航以在我的片段中显示对话框

哪里class OtherFragment: BottomSheetDialogFragment{...}。OtherFragment 正在打开。但问题是当我导航到 OtherFragment 时,未调用 SomeFragment 的 onPause 函数。反之亦然(也就是说,当我关闭其他片段时,在 someFragment 中没有调用 onResume)。是什么原因?我错过了什么吗?

0 投票
1 回答
273 浏览

android - 在导航架构组件中手动将片段添加到后台堆栈中

我在导航图中有 4 个片段,分别命名为A、B、C、D,我正在从用户那里获取一些数据。

当我处于正常流程(A->B->C->D)并按下返回按钮时,一切(返回堆栈)工作正常。

但是我有一个案例,我有并编辑信息流,假设用户将表单留在片段 D 上,所以当用户再次出现在屏幕上时,我必须在同一屏幕上导航用户,即片段 D。我通过 Deep 实现了它-关联。

现在的问题是在上述情况下,除了片段 D 之外,堆栈中将没有片段。但是我需要当用户按下后退按钮时,它应该导航到 Fragment C 到 Fragment B 到 Fragment A

意味着我希望将其他 Fragments(A,B,C) 添加到后台堆栈中。我们可以做同样的事情吗,如果可以,怎么做?

===这里是代码===

my_navigation_graph.xml。

导航通过。

在 AFragment 内部,我正在重定向到其他片段,假设为每个片段创建深层链接不是好的做法。

此代码在onCreate()AFragment 方法中

和重定向功能

现在,如果我在步骤中得到 4,它将重定向到 DFragment,因此堆栈将为 A->D,但我也希望 B 和 D 进入堆栈(A->B->C->D)。

0 投票
4 回答
794 浏览

android - 将 SafeArgs 与 Proguard 和导航架构组件一起使用时出现 ClassNotFoundException?

我正在使用SafeArgs插件,Navigation Architecture Component但应用程序崩溃了。

minifyEnabled true在 Gradle 中使用。

另外,我有三个模块appdatadomainproguard-rules所以,在我添加的所有三个文件中

argType在导航图中使用这三个类。

但是应用程序仍然崩溃。任何帮助,将不胜感激。

0 投票
0 回答
55 浏览

android - 使用导航图中定义的 Navigation Destination Arguments 将数据传递到从 Navigation Drawer 启动的 Fragment

当使用导航架构组件和从导航抽屉启动片段时,您使用菜单和导航图,例如下面的菜单用于导航抽屉,称为“drawer_menu”

并在各自的导航图下方

通过这样做,您只需设置下面的代码,当您单击导航抽屉中的 Fetch 时,它将自动打开片段而无需任何额外代码

我遇到的问题是在导航图中的“nav_fetch_fragment”参数中,每次我从导航抽屉启动片段时,它都会传递默认值“fetchAdmin”,但我有 3 种不同类型的提取,我希望它们以不同方式解析每当我点击导航抽屉时。我的 Fetch Types 包括“fetchClient”、“fetchCustomer”、“fetchAdmin”,当从导航抽屉单击时,它们应该加载不同的回收站视图数据。

我怎么能这样做,因为通常你只需从你正在导航的片段声明导航方向到你正在导航到的片段,例如下面从主片段导航到获取片段

0 投票
2 回答
79 浏览

android - android中的深度链接支持

我们正在尝试在我们的应用程序中支持隐式深层链接。该应用程序使用带有底部导航选项卡的导航架构组件。我想了解,是否可以通过在一个地方编写重新路由逻辑来动态重新路由到 android 应用程序的特定屏幕。据我所知,目前不可能在应用程序的所有屏幕没有唯一 uri 路径的情况下支持深度链接。如果我们没有唯一的 uri 路径,我们如何解决这个问题?我们有各种屏幕,如主页、任务面板、目标面板、绩效评估等。我们希望支持以下链接-

  1. https://app.abc.com - 应该打开应用程序的主页
  2. https://app.abc.com/?empId=employeeId&showTaskDetails=true&taskIds=uuidslist - 应该根据查询参数打开任务面板或目标面板我能够解决第二个问题,我们想要打开一个特定页面基于查询参数,但在使用第一个链接的深层链接时遇到问题。不是在“https://app.abc.com”上打开主页屏幕,而是打开任务面板屏幕。
0 投票
1 回答
118 浏览

android - 完全重启 android 应用程序,包括应用程序类

我想在用户更改应用程序中的语言后重新启动应用程序。

  • 我正在开始新的意图MainActivity或作为我尝试过activity.recreate()的方法的另一个解决方案,但在重新启动 Activity 时片段未初始化。(我正在使用Navigation Component

  • 我正在使用Koin依赖注入,一些范围丢失并且应用程序崩溃。

我将重新启动 中Application class指定的和主要活动AndroidManifest.xml,那么如何启动应用程序,就好像我从头开始重新打开它一样?