Фрагмент liveata наблюдателя вызывается только один раз со значением по умолчанию - PullRequest
0 голосов
/ 26 июня 2019

Я просто не могу понять, что не так в этом коде и почему наблюдатель не вызывается при обновлении значения. Я использую Fragement с Liveata и вот полный код. При запуске приложения фрагмент получает значение из данных по умолчанию, которое в данном случае равно 100. Но после обновления значения с использованием метода queueChannelId(channelId) наблюдатель не вызывается. Я положил оператор печати, и я вижу, что метод выполняется в основном потоке. Пожалуйста, помогите

Фрагмент:

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewModel = 
ViewModelProviders.of(this).get(SomeViewModel::class.java)

    viewModel.getChannelId().observe(this, Observer {
        // Only called with default value of mutablelivedata

    })
}

Я могу заверить, что onDestroyView и onDestroy никогда не вызывались.

ViewModel:

fun getChannelId() : MutableLiveData<Int> {
    return repository.getChannelId()
    }

Repository:

var channelIdObservable = MutableLiveData(100)

fun queueChannelId(channelId: Int) {
    channelIdObservable.value = channelId
}
fun getChannelId() : MutableLiveData<Int> = channelIdObservable

1 Ответ

0 голосов
/ 26 июня 2019

если вы звоните queueChannelId из другого потока, попробуйте

channelIdObservable.postValue (channelId)

P.S .: Я не вижу здесь никакой другой проблемы. Поделитесь своим кодом того, как вы звоните queueChannelId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...