【发布时间】:2021-04-08 08:19:18
【问题描述】:
我有片段ProductsFragment,它在回收站视图中显示产品列表。
当在回收站视图上单击一个项目时,它会将我带到AddProductFragment,它会显示所单击项目的产品详细信息。这是我使用 SharedProductViewModel 完成的,它有一个选定的可变实时数据
我面临的问题是ProductsFragment 我有一个浮动操作按钮,我用它导航到AddProductFragment 以添加新产品。但它会显示列表中先前单击的产品详细信息
SharedProductViewModel
class SharedProductViewModel : ViewModel() {
val selected = MutableLiveData<Product>()
fun select(product: Product) {
selected.value = product
}
}
ProductsFragment - 当项目被点击时
private val model: SharedProductViewModel by activityViewModels()
private fun listItemClicked(product: Product) {
Toast.makeText(context, "Selected name is ${product.name}", Toast.LENGTH_LONG).show()
model.select(product)
navController.navigate(R.id.addProductFragment)
}
AddProductFragment - 单击添加新产品图标时显示先前单击的产品详细信息
注意:观察者总是被触发,无论是点击项目还是加号按钮来添加新产品
private val model: SharedProductViewModel by activityViewModels()
model.selected.observe(viewLifecycleOwner, Observer<Product> { item ->
Toast.makeText(context, "item clicked and received" + item.name, Toast.LENGTH_LONG).show()
addProductViewModel.updateProductDetails(item)
})
我不希望它在单击添加新产品时显示之前单击的产品详细信息。
请问我该怎么做
谢谢 回复
【问题讨论】:
-
添加一个bundle到fragment事务,告诉下一个fragment它应该显示一个新产品还是在视图模型中选择一个。
标签: android kotlin android-livedata android-viewmodel