У меня возникают некоторые проблемы с привязкой данных и liveata, когда у меня есть пользовательский объект.
Например:
У меня есть MutableLiveData
val user = MutableLiveData<User>()
и я использую двустороннюю привязку данных с
@={viewModel.user.name}
Но мой наблюдатель не был уволен внутри Фрагмента с
viewModel.user.observer
.
Когда я помещаю точку останова в сгенерированный класс FragmentBinding
, я вижу, что вызывается setValue и пользовательские значения userLiveData с данными.
Проблема в том, что наблюдатель не был уволен из фрагмента.
Кто-нибудь знает, что я там делаю не так?
РЕДАКТИРОВАТЬ 1
Ниже мой фрагмент кода:
val infoPessoalViewModel: InfoPessoalViewModel by viewModel()
lateinit var bindingView: FragmentInfoPessoalBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
bindingView = DataBindingUtil.inflate(inflater, R.layout.fragment_info_pessoal, container, false)
return bindingView.root
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
bindingView.apply {
lifecycleOwner = this@InfoPessoalFragment
viewModel = infoPessoalViewModel
}
infoPessoalViewModel.user.observe(this, Observer { user ->
user.confirmEmail?.let {
//NOT FIRED HERE
Log.d("LiveData","Fired!")
}
})
}
РЕДАКТИРОВАТЬ 2
Извините, я приводил пример переменных с именами различий.