আমার একটি খণ্ড রয়েছে:
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
})
}
}
আমার খণ্ডে আমার কাছে স্টুডেন্টভিউমোডেলের একটি উদাহরণ রয়েছে যা শুরু হয়েছিল onViewCreated(...)
।
ইন, StudentsViewModel
, students
একটি হল LiveData
:
class StudentsViewModel : ViewModel() {
val students = liveData(Dispatchers.IO) {
...
}
}
ফিরে যান MyFragment
, ফাংশন মধ্যে updateStudentList()
আমি অভিযোগ কম্পাইলার ত্রুটি পেতে this
পরামিতি আমি পাস .observe(this, Observer{...})
করেUse viewLifecycleOwner as the LifecycleOwner
কেন আমি এই ত্রুটি পেতে পারি? কীভাবে এ থেকে মুক্তি পাবেন?
IllegalStateException: Can't access the Fragment View's LifecycleOwner when getView() is null i.e., before onCreateView() or after onDestroyView()