【发布时间】:2021-03-02 17:27:55
【问题描述】:
我有 2 个片段和一个活动。 Fragment A 和 Fragment B。我做了一些任务,然后如果我从 FragmentA 移动到 FragmentB 并按返回按钮返回。在这种情况下,状态不会像以前一样保持不变,而是像第一次一样获得新的视图。为什么?
实际上,我有一个recyclerview 和自定义工具栏。如果我滚动某个项目然后移动到fragment B 并返回,我应该处于相同的状态。
请注意:这个问题可能会被问很多次,但我的编码场景不同。
我正在使用 dagger hilt、kotlin、corutine、viewmodel、live data、recyclerview asynclist different 和 nav 组件。
代码: 片段A
private val viewModel: ProductViewModel by viewModels<ProductViewModel>()
-
onviewcreated
viewModel.getProducts.observe(viewLifecycleOwner, Observer { 响应 -> 停止微光布局() response.let { productResponse -> productAdapter.differ.submitList(productResponse) } setActionListener() })
ViewModel 类
class ProductViewModel @ViewModelInject constructor(
private val repository: ProductRepository,
) : ViewModel() {
val getProducts = liveData(Dispatchers.IO) {
emit(repository.getProducts())
}
}
【问题讨论】: