Используйте viewLifecycleOwner в качестве LifecycleOwner.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Используйте viewLifecycleOwner в качестве LifecycleOwner.

Сообщение Anonymous »

У меня есть фрагмент:

Код: Выделить всё

class MyFragment : BaseFragment() {

// my StudentsViewModel instance
lateinit var viewModel: StudentsViewModel

override fun onCreateView(...){
...
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

viewModel = ViewModelProviders.of(this).get(StudentsViewModel::class.java)
updateStudentList()
}

fun updateStudentList() {
// Compiler error on 'this': Use viewLifecycleOwner as the LifecycleOwner
viewModel.students.observe(this, Observer {
//TODO: populate recycler view
})
}
}
В моем фрагменте у меня есть экземпляр StudentViewModel, который инициируется в onViewCreated(...).

В StudentViewModel студенты — это LiveData:

Код: Выделить всё

class StudentsViewModel : ViewModel() {
val students = liveData(Dispatchers.IO) {
...
}
}
Вернуться к MyFragment, в функции updateStudentList() Я получаю ошибку компилятора, жалующуюся на параметр this, который я передал в .observe(this, Observer{...}), который использует viewLifecycleOwner в качестве LifecycleOwner

Почему я получаю эту ошибку? Как от этого избавиться?

Подробнее здесь: https://stackoverflow.com/questions/595 ... cycleowner
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»