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

android - 为什么在 Jetpack Compose 的下一页中显示 BottomNavigation?

我想在 Jetpack Compose 中Scaffold进行导航。BottomNavigation它们位于MainPage 中。但是当我单击MainPage中的内容并导航到DetailPage时,它​​们BottomNavigation也存在,如图所示:

这是带有底部导航的 MainPage

这是从 MainPage 导航的 DetailPage

如何隐藏BottomNavigationDetailPage ?

0 投票
1 回答
1593 浏览

android - Compose Navigation - 导航目的地 ... 不是此 NavGraph 的直接子级

我正在尝试为我的订单管理应用程序构建以下导航:

这是我的导航代码:

这是开始导航的代码:

但是,我收到以下错误:

这里有什么问题?

更新 1(根据 Ian 的解决方案)

但仍然面临同样的问题。看起来我没能理解伊恩的建议。我错过了什么?

0 投票
0 回答
127 浏览

android - 使用 Jetpack Compose 导航控制器进行导航时,Jetpack 组件屏幕重叠或部分呈现

这是症状 - Youtube

使用 Jetpack Compose 导航控制器进行导航时,屏幕看起来像是部分渲染或重叠的。

我试图找到一个答案,但似乎根本没有人遇到这个问题。

以下是相关的代码片段

可能是什么原因?谢谢。

0 投票
0 回答
166 浏览

android - 将状态包装在 NavHost 中后,无法从同一个 Jetpack Compose 屏幕收集状态

在将其包裹在NavHost.

原始工作解决方案:
此 JcScreen 用于用户登录
活动ActAuth

JCScreen 的摘要ScreenSignInWithInputValidationDebounce()

在我整合高度相似的 JCScreen 以供用户注册之前,一切正常。

在我看来,一旦包装成 a NavHost,状态管理就不同了。
这可能是一个类似的问题,但是,我仍然无法解决我上面的问题。

0 投票
1 回答
1122 浏览

android - 如何在jetpack compose中使用BottomBar实现底部表

所以我想要实现的是:

  • 一个承载 BottomNav 栏的家庭组合(此处使用脚手架)
  • 底部导航栏附有 3 个其他可组合项
  • 3 个可组合项中的每一个都有自己的惰性列
  • 3 个惰性列中的每个项目都有一个菜单图标,单击该图标会打开底部工作表

借助此处的答案,我可以通过将脚手架封闭在 ModalBottonSheetLayout 中来实现上述目的:Jetpack Compose Scaffold + Modal Bottom Sheet

问题:

  • 底部工作表的目的是显示一个菜单项,单击该菜单项应从lazyColumn中删除该项目
  • 所以底部工作表需要知道被点击删除它的项目的详细信息

我怎样才能做到这一点?主可组合项没有任何有关其托管的可组合项中存在的惰性列中的项目的信息。

有没有不同的方法来解决这个问题?

这是我的代码:

HomeComposable.kt

MessageItemsComposable.kt

0 投票
2 回答
1275 浏览

android - Jetpack Compose NavHost 重组可多次组合

我发现可组合屏幕在从 Navhost 导航期间多次重新组合 compose 以下示例显示了我如何将导航与日志集成以确定函数被调用的次数,

在运行代码之后,这是在打开 Splash 一次然后打开 LoginScreen 之后导航的行为方式

我还尝试了一些带有 Navigation compose 的 Google 示例,它的行为方式相同,所以这是预期的行为吗?还是一个错误
navigation_version = '2.4.0-alpha08'

0 投票
0 回答
601 浏览

android - Jetpack Compose 将编码的字符串作为参数传递给 navController 会导致 IllegalArgumentException

我在这里这里检查了答案,将一个对象从一个可组合对象传递到另一个对象,并将一个@Serializable对象作为字符串从一个可组合对象传递到另一个对象,但得到了结果错误

数据类

它是reqres.in api的示例,NavHost在可组合物之间导航是

navController.navigate("detail/$json")调用时发生崩溃。

0 投票
0 回答
155 浏览

android - 碎片对jetpack compose没有用吗?

据我所知,在 jetpack-compose 之前,最好有一个活动,然后为您的应用程序使用多个片段。但是现在jetpack compose 提供了jetpack compose 函数之间的导航,那么我们现在需要片段吗?或者,如果我们不再需要片段,我们可以只使用具有多个屏幕的单个活动(组合功能),我如何在仅使用单个活动和组合功能的同时在数据库中添加/编辑、获取上下文等。我仍然是初学者/正在学习,所以我可能会遗漏一些东西或做错什么。

0 投票
2 回答
1486 浏览

android - Jetpack Compose Navigation - 底部导航多个返回堆栈 - 查看模型范围问题

所以我有两个选项卡,选项卡 A 和选项卡 B。每个选项卡都有自己的后台堆栈。我使用这个谷歌文档中的代码实现了多回栈导航

选项卡 A 有 3 个屏幕(屏幕 A1 -> 屏幕 A2 -> 屏幕 A3)。我使用该函数来实例化视图模型,并在每个屏幕hiltViewModel()的块内调用它composable()

问题是当我从 A1 导航到 A2 再到 A3 时,然后当我将选项卡更改为选项卡 B 时,屏幕 A2 的视图模型似乎正在被处理(onCleared被调用)。因此,当我返回显示屏幕 A3 的选项卡 A 然后返回屏幕 A2 时,再次实例化 A2 的视图模型(再次init调用块)。我想要实现的是为这个流程保留 A2 的视图模型,直到我退出 A2。

这甚至可能吗?

0 投票
0 回答
412 浏览

android - 更新到新的库版本后,导航撰写状态保存中断

有一天,我需要在我的 Jetpack Compose 项目中实现一个 Google Accompanist 库。由于库依赖于当前稳定的 Compose 版本,我不得不将它与navigation-compose库一起更新。事情破裂了。

我将BottomNavigation其用作顶级导航,并从与此相关的选项卡中进行更深入的导航BottomNavigation。每个选项卡都有自己的NavHostController,我想将其保存到一个Bundle以稍后恢复控制器。用例:

  1. 用户打开选项卡 1
  2. 从 Tab 1 内部导航到另一个屏幕
  3. 切换到选项卡 2
  4. 切换回 Tab 1。在第 2 步打开的屏幕是 Tab 1 的当前目标NavGraph

Before 状态中提供的代码按预期工作。

迁移前我的依赖项(撰写版本 1.0.0-alpha12):

在我的顶级可组合中,在BottomNavigation被调用的地方,我有一个状态:

我将其传递给我的 Tab 可组合:

这由以下函数描述:

迁移后我的依赖项(撰写版本 1.0.3):

其他代码的每一位都保持不变。不知何故,这只是停止工作。我做了一些调试,并确保controller.saveState()不返回null。在两个版本中都会触发回调。

我发现唯一不同的是 的navigate()函数NavController,即 中的扩展函数navigation-compose:1.0.0-alpha07和 中的成员函数navigation-compose:2.4.0-alpha10。我从Employees可组合的内部调用它。

问题

API 内部发生了什么变化,它停止工作而没有抛出任何错误?如何改变我的代码以复制“之前”行为?