问题标签 [jetpack-compose-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 投票
1 回答
386 浏览

android - 如何在 Jetpack Compose 中不使用 backstack 进行导航?

现在我以这种方式在屏幕之间切换

如何切换到另一个屏幕,但仍清除后台堆栈?

0 投票
0 回答
194 浏览

android-jetpack-compose - Jetpack 导航撰写,底部导航,制作后退按钮切换标签?

我正在尝试将底部导航(即选项卡)与 Android Jetpack Compose 和Navigation Compose库一起使用。我设置了多个后退堆栈,以便在您在它们之间切换时保留每个选项卡的状态。但是,如果我通过点击其中一个选项卡来更改选项卡,Android 后退按钮不会返回到上一个选项卡。相反,它在该选项卡中导航。如何设置它以返回上一个选项卡?

示例场景(我想改变最后一步的行为)。

  1. 我有两个选项卡,A 和 B。
  2. 从屏幕 A1 上的 A 选项卡开始。
  3. 在该选项卡中推送一个名为 A2 的新屏幕。
  4. 在其开始屏幕 B1 上点击 B 选项卡以移动到它。
  5. 在该选项卡 B2 中推送一个新屏幕。所以选项卡堆栈现在是:A:[A1,A2] 和 B:[B1,B2]
  6. 点击 A 选项卡。我回到了那个堆栈,在屏幕 A2 上。该选项卡中的状态被保留。
  7. 按 Android 后退按钮。它进入A1。相反,我希望它返回到 B 选项卡,屏幕 B2。
0 投票
2 回答
234 浏览

kotlin - 使用 Gradle Kotlin DSL 安装依赖项不起作用

大家好,总的来说,我是 IntelliJ 的新手,尤其是 Gradle,我感觉自己完全是个菜鸟。:D

我不确定这是否是 Kotlin DSL 的事情,或者我只是以错误的方式做事,它在 Groovey 中也不起作用。

经过数小时的试验和错误并阅读其他 SO 帖子后,我仍然无法安装简单的依赖项......不可能那么难......

目前,我正在使用 Jetpack Compose for Desktop,尽管它仍处于 alpha 阶段并且可以正常工作,但看在上帝的份上,我无法添加依赖项。

所以这是我的问题:

我尝试像他们说的那样安装依赖项,我应该在 https://developer.android.com/jetpack/compose/navigation#kts

是的,我知道它是一个 android 包,所以它可能无法编译,或者它可能在运行时崩溃,但它至少不应该找到并下载依赖项吗?

所以......如果我添加

到我的 build.gradle.kts 在此处输入图像描述

并尝试编译它,我在构建过程中遇到异常:

在此处输入图像描述

到目前为止我尝试了什么:

我检查了是否在我的 build.gradle.kts 存储库部分和我的 settings.gradle.kts 中配置的存储库 maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") pluginManagement-section 包含我想要的包。站点https://mvnrepository.com/artifact/androidx.navigation/navigation-compose?repo=space-public-compose-dev告诉我,存储库包含我需要的包。

我检查了错误日志本身。但我不知道它想表达什么。我使用 Java SDK16,因为我希望向下兼容并且依赖项仍处于 alpha 状态,我认为它应该是兼容的。我使用 Kotlin 1.5 .... 就是这样。

感谢您阅读所有内容 :) 非常感谢您抽出宝贵时间...如果我忘记了一些重要信息,请告诉我,我会尽快添加。

0 投票
1 回答
366 浏览

android - 无法使用导航和喷气背包组合弹出起始目的地

我在 Android 上使用最新版本的导航和撰写,我遇到了一个错误,我无法弹出导航的起始目的地。问题是,如果我有 3 个目的地(A、B、C)并且从 A-> B -> C 出发,我无法从 backstack 中弹出 A,但是当我调用时会弹出 B popUpTo(B) inclusive = true,导致后退按钮回到A。

我的代码:

导航主机

导航

- A到B

- B到C

我想创建一个流程,在上 C 后 A 和 B 都不在后堆栈上。但由于某种原因,我无法从后堆栈中删除 A ...我该怎么做?

0 投票
1 回答
356 浏览

android - 尝试运行 jetpack compose 仪器测试时如何克服此构建错误

我遵循了jetpack compose navigation codelab。在第 7 步测试 NavHost 之前,一切都很顺利。尝试运行测试时,我收到以下错误和堆栈跟踪:

合并的清单存在问题,但在androidTest目录中我没有清单,所以据我所知,我无法控制生成的清单中的内容。

我可以从目录中看到合并清单,main并且那里没有错误。我可以在构建文件夹中看到生成的清单,它确实显示了很多错误。

有什么技术可以用来尝试解决这个问题吗?

编辑:进一步调查显示问题为

android:exportedmain/AndroidManifest.xml按预期声明,并且它也存在于生成的合并清单中的每个组件中androidTest

0 投票
4 回答
1142 浏览

kotlin - JetpackCompose 导航嵌套图导致“应在 setGraph 调用之前设置 ViewModelStore”异常

我正在尝试将 Jetpack Compose 导航应用到我的应用程序中。

我的屏幕:登录/注册屏幕和底部导航栏屏幕(通话、聊天、设置)。

我已经发现最好的方法是使用嵌套图。

但我不断收到ViewModelStore should be set before setGraph call异常。但是,我认为这不是正确的例外。

我的导航已经是最新版本。可能我的嵌套图逻辑不正确。

要求:我希望能够从登录或注册屏幕导航到任何底部栏屏幕和反向

导航图.kt

登录导航图.kt

BottomBarNavGraph.kt

AppScaffold.kt

底栏.kt

屏幕.kt

导航屏幕.kt

0 投票
1 回答
182 浏览

android - Android:撰写导航参数没有被传递

我有一个用 Compose 制作的非常简单的应用程序 ui。

目前有 3 个屏幕:登录、项目列表和项目详细信息。

问题是当我单击项目列表中的项目时,我导航到项目详细信息并将项目 ID 作为导航 arg 传递。

问题是,我无法检索它并且参数包是空的。

这是我的代码:

MainActivity

主要可组合:

NavGraph

使用参数触发导航的 UI 部分:

我不明白这里出了什么问题,不是同一个导航图中的可组合物吗?

我还有另一个问题,当我按下后退按钮时,导航不会上去但它会关闭应用程序(就像没有后退堆栈......)。

0 投票
0 回答
91 浏览

kotlin - Jetpack Compose 带有导航 backstackentry 参数和深度链接参数

如何添加通过正常导航传递的正常参数和来自的参数

而其他深层链接将具有正常模式

可与导航和深层链接参数组合

显现

其他可组合的普通导航和深层链接

0 投票
1 回答
298 浏览

kotlin - Jetpack 将深层链接组合到嵌套导航中

根据 Android 开发者的建议,对于成长中的项目,建议使用嵌套导航

但是我应该怎么做才能像在这个例子中那样深入链接到导航中的导航,以便转到“用户名”可组合

我已经设法像开发人员页面中显示的那样进行正常的深层链接

用可组合的嵌套导航包围内部嵌套导航并将深层链接放在那里会更好吗?

0 投票
1 回答
363 浏览

android - 将参数传递给 Jetpack Compose 中的嵌套导航图

文档中,我看到您可以像这样嵌套导航图:

我想知道,如何在路线中传递一个参数,并将其提供给导航图中的所有可组合项?

这是我当前的导航图:

我基本上是在尝试避免在每个可组合路线上单独设置 classId 导航参数。我没有看到一种方法可以将参数列表传递navigation()composable().

可能我所描述的是不可能的,但期待任何人的想法!