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

android - 如何使用 Jetpack Compose + Navigation 处理后退导航(无片段)

我正在尝试导航让我们说从入职到仪表板等,一旦用户点击仪表板就会弹出入职,但仍然有“后退动作”,我最终再次入职。

这是示例代码:

这也不起作用

出于某种原因,这种工作方式,所以仪表板被解雇,从细节上我最终入职

0 投票
1 回答
1350 浏览

android-jetpack-compose - Jetpack Compose + Navigation:rememberSaveable 在旋转时丢失状态

我在 Jetpack Compose 与 Navigation 结合时遇到了一个奇怪的行为:如果您在一些可组合的导航中使用 rememberSaveable,则状态不会按承诺保存(例如,旋转后会丢失)。这是一个简单的例子:

上面的代码生成一个可以输入的文本字段。一旦旋转屏幕,输入的文本就会丢失,即使该值应该由 rememberSaveable 保存。

调查了一下,我注意到以下几点:

  • 问题实际上是 NavHost。如果将定义变量“value”的行移动到“MyScreen()”的顶部(在 NavHost 之外),那么一切都会按预期工作。

  • 真正的问题似乎是可组合变量“currentCompositeKeyHash”在 NavHost 内的配置更改后没有保留。该变量用作 savedInstanceBundle 的键,以通过 rememberSaveable 检索保存的值,从而丢失状态。特别是,如果在 rememberSaveable 中明确指定一个键,那么一切都会按预期工作。

这是一个错误还是我误解了什么?

0 投票
0 回答
231 浏览

android - Jetpack Compose 互操作性 - 保留视图实例

我正在使用 Jetpack Compose 开发应用程序。在我的项目中,我必须添加一个使用GLSurfaceView. 创建该视图时,需要一些时间来初始化所有内容。现在,当我导航到另一个屏幕并返回地图屏幕时,会再次执行设置过程,GLSurfaceView这会导致动画卡住。我知道有remember,但它只对重新组合有帮助,而不是在屏幕之间导航时。在视图模型中保存视图实例对我来说似乎是错误的。

有没有办法GLSurfaceView在应用程序的生命周期内保留其初始化实例?

(我的可组合看起来或多或少像这样

0 投票
1 回答
319 浏览

kotlin - 撰写导航返回按钮未显示

我正在尝试在此SO 线程之后设置导航返回按钮,但无法使其工作。

任何人都可以帮忙解决这个问题吗?谢谢!

0 投票
2 回答
646 浏览

kotlin - 撰写导航标题未更新

我正在尝试根据 ViewModel 中titleTopAppBar实时数据更新 ,我在不同的屏幕上更新。看起来实时数据正在正确更新,但更新并未反映在 TopAppBar 的标题上。这是代码:

编辑:视图模型

任何人都可以帮助找到错误吗?谢谢!

编辑:

这是该项目的 GitHub 链接:https ://github.com/rawhasan/compose-exercise-lazy-vertical-grid

0 投票
2 回答
1665 浏览

android-jetpack-compose - 如何在 Compose NavGraph 中的两个或多个 Jetpack 可组合组件之间共享视图模型?

考虑这个例子。

对于身份验证,我们将使用 2 个屏幕 - 一个用于输入电话号码,另一个用于输入 OTP。

这两个屏幕都是在 Jetpack Compose 中制作的,对于 NavGraph,我们使用的是 compose 导航。

另外我不得不提一下,DI 是由 Koin 处理的。

那么我们如何才能在 Jetpack compose NavGraph 中的两个或多个可组合组件之间共享相同的视图模型呢?

0 投票
2 回答
1570 浏览

android - 如何在 Jetpack Compose Navigation 中正确使用 Viewmodel

我目前正在使用 Jetpack Compose 和其他一些 Jetpack 库构建应用程序,

我使用 Room 来存储这样的数据

我使用 Repository 进行远程和本地模型集成,就像这样

我像这样使用 Hilt 进行依赖注入

然后我创建 Viewmodel 用于与 Composable 通信数据

然后我MainActivity使用 Jetpack Compose 和 JetPack Compose Navigation 创建布局,使用BottomNavigationwithNavHost构建传统的 BottomNavigation Activity

其中一个页面是这样的,Flow.collectAsState()用于将数据流从 Room 转换为 Composable State

它确实构建了一个可行MainActivity的底部导航,但是当我在底部导航按钮之间快速切换时,我的应用程序崩溃了,我得到如下错误日志:

我使用调试断点来查看发生了什么,结果发现它getViewModelStoreNavBackStackEntry达到Lifecycle.State.DESTROYED状态时使用,我不知道如何修复它。如果有人可以帮助我,我将不胜感激

0 投票
1 回答
98 浏览

navigation - Jetpack Compose App Navigation 不会重定向到另一个页面?

为什么我主页上的按钮什么都不做?它将从可组合函数调用它的 println,但不会重定向或做任何事情

0 投票
0 回答
141 浏览

android-jetpack-compose - 有没有办法在 Jetpack Compose Navigation 中使用斜杠(“/”)传递字符串参数?

我想在 jetpack compose 导航中传递一个 url 字符串作为参数。问题是:斜杠(“/”)抛出异常,因为导航使用斜杠分隔参数并且没有找到正确的路线。

然后,如果我尝试导航,它会引发异常:

有没有办法在 Jetpack Compose Navigation 中使用斜杠(“/”)传递字符串参数?

0 投票
1 回答
4689 浏览

android - Android Jetpack Compose 导航中的依赖性问题

我正在探索文档中指定的撰写导航。

使用文档中指定的版本添加依赖2.4.0-alpha07项,会出现以下错误,

错误 1

检查 AAR 元数据值时发现的一个或多个问题:

在依赖项的 AAR 元数据 (META-INF/com/android/build/gradle/aar-metadata.properties) 中指定的 minCompileSdk (31) 大于此模块的 compileSdkVersion (android-30)。依赖:androidx.navigation:navigation-compose:2.4.0-alpha07。AAR 元数据文件:/Users/abhimanyu/.gradle/caches/transforms-3/0575ff5712e0a9c15b8d7424501c07b8/transformed/jetified-navigation-compose-2.4.0-alpha07/META-INF/com/android/build/gradle/aar-metadata。特性。

这个错误迫使我将我的应用程序从 30 升级到 31 compileSdkVersiontargetSdkVersion

升级版本会出现此错误,

错误 2

清单合并失败:针对 Android 12 及更高版本的应用需要为android: exported相应组件定义了意图过滤器时指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported

为了解决这个问题,检查了这篇文章

即使在添加 之后android:exported,我也会收到相同的错误(错误 2)。

compileSdkVersion升级到 31 是强制性的吗?

如果是,如何解决错误 2。如果不是,如何解决错误 1?

如果可能的话,我个人更喜欢坚持使用 SDK 30。