У меня есть ViewModel, который я использовал в Fragment и DialogFragment. В Dialog Fragment я пытаюсь обновить значение MutableLiveData в Dialog Fragment, а затем использовать это значение из MutableLiveData в моем фрагменте. когда я проверяю фрагмент диалогового окна, у меня есть данные внутри MutableLiveData, но при попытке доступа к этим данным внутри фрагмента я получил значение null. пожалуйста, посоветуйте мне, как решить эту проблему?
в ViewModel:
val width = MutableLiveData<String>()
val height = MutableLiveData<String>()
val length = MutableLiveData<String>()
в DialogFragment:
vModel.width.value = "6"
vModel.height.value = "6"
vModel.length.value = "6"
и в моем фрагменте, когда я пытаюсь доступ к данным из MutableLiveData:
println(vModel.width.value)
println(vModel.height.value)
println(vModel.length.value)
это мой BaseFragment:
abstract class BaseFragment<B : ViewDataBinding, V : BaseViewModel>(
private val layout: Int,
private val viewModel: V
) : Fragment() {
private lateinit var v: View
protected lateinit var binding: B
protected lateinit var vModel: V
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
super.onCreateView(inflater, container, savedInstanceState)
binding = DataBindingUtil.inflate(inflater, layout, container, false)
binding.lifecycleOwner = viewLifecycleOwner
this.vModel = viewModel
initVariables()
initObserves()
initViews()
return binding.root
}
abstract fun initVariables()
abstract fun initObserves()
abstract fun initViews()
}
это мой BaseDialogFragment:
abstract class BaseDialogFragment<B : ViewDataBinding, V : BaseViewModel>(
private val layout: Int,
private val viewModel: V
) : DialogFragment() {
private lateinit var v: View
protected lateinit var binding: B
protected lateinit var vModel: V
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
super.onCreateView(inflater, container, savedInstanceState)
binding = DataBindingUtil.inflate(inflater, layout, container, false)
binding.lifecycleOwner = viewLifecycleOwner
this.vModel = viewModel
initVariables()
initObserves()
initViews()
return binding.root
}
abstract fun initVariables()
abstract fun initObserves()
abstract fun initViews()
}