android - 使用 NavController 导航时只允许一个实例

标签 android android-architecture-navigation

我目前在我的项目中使用 Android 导航架构。它具有可以使用快捷方式启动任何 fragment 的功能。目前我正在使用 NavController 在单击快捷方式时导航到所需的目的地。
但是当我多次单击快捷方式时,每次都会创建一个新的 fragment 实例。
所以,我的问题是,有没有办法在使用 NavController 导航到 fragment 时只接受一个 fragment 实例?
我在谷歌上搜索了很多次,但一无所获。提前致谢。

最佳答案

您可以使用 by navGraphViewModels代表
最重要的是为您的 View 设置 id 以便在配置更改期间保存状态。这在官方文档中没有提到。
默认情况下,在配置更改(旋转和...)期间不会保存 fragment 导航。
ViewModel 将在配置更改后保持不变,您可以在那里保存状态然后恢复它。
还要检查这些链接:
https://code.luasoftware.com/tutorials/android/android-jetpack-navigation-lost-state-after-navigation/

Android navigation component: how save fragment state

关于android - 使用 NavController 导航时只允许一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247986/

相关文章:

android - 为什么会出现这个错误? java.lang.RuntimeException : ImageLoader must be init with configuration before using 错误

java - 在 Android 中解析 Google map 标记的 JSON 响应

android - 带有 NavigationDrawer 的导航组件

kotlin - 如何从 Compose-Navigation 中的返回堆栈中删除可组合项

Android导航组件如何保存BottomNavigationBar fragment 状态

java - 类作为静态变量的容器

android - 添加到 android 后无法从数据库中看到更改?

android - 抖动错误:Please ensure that the SDK and/or project is installed in a location that has read/write permissions for the current user: Flutter Error

Android 带抽屉的 Google 搜索栏

离开项目选项卡BottomNavigation时Android清除backstack