Nik*_*itc 9 navigation android android-architecture-navigation
我使用bottomNavigationView和导航组件。请告诉我在切换到另一个标签并返回到旧标签后如何不破坏片段?例如,我有三个选项卡-A,B,C。我的开始选项卡是A。导航到B之后,然后返回A。当我返回到选项卡A时,我不希望重新创建它。怎么做 谢谢
根据未解决的问题,导航不直接支持多个后向堆栈-即,由于片段不支持多个后向堆栈,因此当您从A或C返回到B时,保存堆栈B的状态。
根据此评论:
NavigationAdvancedSample现在可从https://github.com/googlesamples/android-architecture-components/tree/master/NavigationAdvancedSample获取
本示例使用多个NavHostFragments(每个底部导航选项卡一个)来解决Fragment API在支持多个反向堆栈方面的当前限制。
我们将继续使用Fragment API,以支持多个后向堆栈,并在创建后将Navigation API插入其中,这将消除对
NavigationExtensions.kt文件之类的东西的需求。我们将继续使用此问题来跟踪该工作。
因此,您可以立即在您的应用程序中使用NavigationAdvancedSample方法并为问题加注星标,以便在解决基本问题并将直接支持添加到Navigation时获得更新。
如果您可以处理销毁片段,但想要保存 ViewModel,您可以将其范围限定到导航图中:
private val viewModel: FavouritesViewModel by
navGraphViewModels(R.id.mobile_navigation) {
viewModelFactory
}
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多
编辑
正如@SpiralDev 所指出的,使用 Hilt 简化了一点:
private val viewModel: MainViewModel by
navGraphViewModels(R.id.mobile_navigation) {
defaultViewModelProviderFactory
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2888 次 |
| 最近记录: |