Как получить объект класса Application в Fragment()?
Мне нужно создать ViewModel для фрагмента. В случае активности способ работал и можно было прямо в конструктор передать application. В случае фрагмента это не работает. В общем-то, нужен любой способ создания VM для фрагмента, либо интересно было бы узнать, как получить Application. Код:
package com.example.newsapp
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
class CrimeListFragment : Fragment() {
private val crimeListViewModel: CrimeListViewModel by lazy {
val crimeListViewModelFactory = ViewModelProvider.AndroidViewModelFactory(//требует Application)
ViewModelProvider(this, crimeListViewModelFactory)[CrimeListViewModel::class.java]}
}
Ответы (1 шт):
Автор решения: Wlad
→ Ссылка
requireActivity().application- лучше подключить DI чем фабрику
AndroidViewModel- слегка дурной тон. если во ВьюМодели нужен контекст - в логике, где-то косяк.