У меня есть один фрагмент, в котором я обновляю общее целое число в моем sharedViewModel, это - фрагменты shops
class ShopFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
private val model: SharedViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
model.updateTotal(200)
}
}
Теперь, мой другой фрагмент, между которыми мне нужны эти данные, - BottomSheetDialogFragment
в этом фрагменте я получаю экземпляр sharedViewModel
, выполняя это
class CartBottomSheet: BottomSheetDialogFragment() {
private val model: SharedViewModel by viewModels ({requireParentFragment()})
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
model.getTotal().observe(viewLifecycleOwner, Observer { total ->
sheet_total_price.text = "$$total.00"
})
}
Теперь, когда я пытаюсь получить 200, которые я разместил в другом фрагменте, он показывает 0, и это означает, что Экземпляр этого sharedViewModel является новым экземпляром, потому что он возвращает 0, потому что мой экземпляр viewmodel инициализирует общий общий итог с 0
class SharedViewModel: ViewModel() {
private val totalData = MutableLiveData<Int>()
private var sharedTotal = 0
fun updateTotal(total:Int){
sharedTotal = total
totalData.value = sharedTotal
}
fun getTotal():LiveData<Int>{
return totalData
}
Теперь мой вопрос: нужно ли передавать как пакет в BottomDialogFragment
этот экземпляр sharedViewmodel
для работы, или есть ли способ получить тот же экземпляр, чтобы получить общее значение
Спасибо