问题标签 [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.
android - 如何使用 Jetpack Compose + Navigation 处理后退导航(无片段)
我正在尝试导航让我们说从入职到仪表板等,一旦用户点击仪表板就会弹出入职,但仍然有“后退动作”,我最终再次入职。
这是示例代码:
这也不起作用
出于某种原因,这种工作方式,所以仪表板被解雇,从细节上我最终入职
android-jetpack-compose - Jetpack Compose + Navigation:rememberSaveable 在旋转时丢失状态
我在 Jetpack Compose 与 Navigation 结合时遇到了一个奇怪的行为:如果您在一些可组合的导航中使用 rememberSaveable,则状态不会按承诺保存(例如,旋转后会丢失)。这是一个简单的例子:
上面的代码生成一个可以输入的文本字段。一旦旋转屏幕,输入的文本就会丢失,即使该值应该由 rememberSaveable 保存。
调查了一下,我注意到以下几点:
问题实际上是 NavHost。如果将定义变量“value”的行移动到“MyScreen()”的顶部(在 NavHost 之外),那么一切都会按预期工作。
真正的问题似乎是可组合变量“currentCompositeKeyHash”在 NavHost 内的配置更改后没有保留。该变量用作 savedInstanceBundle 的键,以通过 rememberSaveable 检索保存的值,从而丢失状态。特别是,如果在 rememberSaveable 中明确指定一个键,那么一切都会按预期工作。
这是一个错误还是我误解了什么?
android - Jetpack Compose 互操作性 - 保留视图实例
我正在使用 Jetpack Compose 开发应用程序。在我的项目中,我必须添加一个使用GLSurfaceView
. 创建该视图时,需要一些时间来初始化所有内容。现在,当我导航到另一个屏幕并返回地图屏幕时,会再次执行设置过程,GLSurfaceView
这会导致动画卡住。我知道有remember
,但它只对重新组合有帮助,而不是在屏幕之间导航时。在视图模型中保存视图实例对我来说似乎是错误的。
有没有办法GLSurfaceView
在应用程序的生命周期内保留其初始化实例?
(我的可组合看起来或多或少像这样)
kotlin - 撰写导航返回按钮未显示
我正在尝试在此SO 线程之后设置导航返回按钮,但无法使其工作。
任何人都可以帮忙解决这个问题吗?谢谢!
kotlin - 撰写导航标题未更新
我正在尝试根据 ViewModel 中title
的TopAppBar
实时数据更新 ,我在不同的屏幕上更新。看起来实时数据正在正确更新,但更新并未反映在 TopAppBar 的标题上。这是代码:
编辑:视图模型
任何人都可以帮助找到错误吗?谢谢!
编辑:
这是该项目的 GitHub 链接:https ://github.com/rawhasan/compose-exercise-lazy-vertical-grid
android-jetpack-compose - 如何在 Compose NavGraph 中的两个或多个 Jetpack 可组合组件之间共享视图模型?
考虑这个例子。
对于身份验证,我们将使用 2 个屏幕 - 一个用于输入电话号码,另一个用于输入 OTP。
这两个屏幕都是在 Jetpack Compose 中制作的,对于 NavGraph,我们使用的是 compose 导航。
另外我不得不提一下,DI 是由 Koin 处理的。
那么我们如何才能在 Jetpack compose NavGraph 中的两个或多个可组合组件之间共享相同的视图模型呢?
android - 如何在 Jetpack Compose Navigation 中正确使用 Viewmodel
我目前正在使用 Jetpack Compose 和其他一些 Jetpack 库构建应用程序,
我使用 Room 来存储这样的数据
我使用 Repository 进行远程和本地模型集成,就像这样
我像这样使用 Hilt 进行依赖注入
然后我创建 Viewmodel 用于与 Composable 通信数据
然后我MainActivity
使用 Jetpack Compose 和 JetPack Compose Navigation 创建布局,使用BottomNavigation
withNavHost
构建传统的 BottomNavigation Activity
其中一个页面是这样的,Flow.collectAsState()
用于将数据流从 Room 转换为 Composable State
它确实构建了一个可行MainActivity
的底部导航,但是当我在底部导航按钮之间快速切换时,我的应用程序崩溃了,我得到如下错误日志:
我使用调试断点来查看发生了什么,结果发现它getViewModelStore
在NavBackStackEntry
达到Lifecycle.State.DESTROYED
状态时使用,我不知道如何修复它。如果有人可以帮助我,我将不胜感激
navigation - Jetpack Compose App Navigation 不会重定向到另一个页面?
为什么我主页上的按钮什么都不做?它将从可组合函数调用它的 println,但不会重定向或做任何事情
android-jetpack-compose - 有没有办法在 Jetpack Compose Navigation 中使用斜杠(“/”)传递字符串参数?
我想在 jetpack compose 导航中传递一个 url 字符串作为参数。问题是:斜杠(“/”)抛出异常,因为导航使用斜杠分隔参数并且没有找到正确的路线。
然后,如果我尝试导航,它会引发异常:
有没有办法在 Jetpack Compose Navigation 中使用斜杠(“/”)传递字符串参数?
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 compileSdkVersion
。targetSdkVersion
升级版本会出现此错误,
错误 2
清单合并失败:针对 Android 12 及更高版本的应用需要为
android: exported
相应组件定义了意图过滤器时指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported。
为了解决这个问题,检查了这篇文章。
即使在添加 之后android:exported
,我也会收到相同的错误(错误 2)。
compileSdkVersion
升级到 31 是强制性的吗?
如果是,如何解决错误 2。如果不是,如何解决错误 1?
如果可能的话,我个人更喜欢坚持使用 SDK 30。