Получить ViewModel ViewModelProvider.Factory и контекст приложения - PullRequest
0 голосов
/ 03 июня 2019

Я расширяю AndroidViewModel, чтобы получить контекст приложения в моей ViewModel, но теперь я также хочу передать некоторые параметры моей ViewModel.После некоторого поиска в Google я узнал, что могу использовать ViewModelProvider.Factory, чтобы получить Parametrized конструктор моей MyViewModel, но как получить контекст приложения.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Вам понадобится Application в ViewModel.Factory, чтобы создать экземпляр AndroidViewModel.

Пути достижения этого

  • если вы создаете экземпляр ViewModel в своей Деятельности / Фрагменте, тогда сделайте getApplicationContext() и приведите его как Application. Если во фрагменте вы можете получить активность хостинга и получить приложение от него.
// Kotlin code
viewModel = ViewModelProviders.of(this,
                ViewModel.Factory(activity?.application!!, param1, param2)) // from an fragment onViewCreated()
  • если ваше приложение имеет класс Application, предоставьте метод для получения экземпляра приложения.
// JAVA code
public static Application getApp() {
        return YourApplication.instance; // instance will be an static field in Application class
    }
0 голосов
/ 03 июня 2019

Из вашей деятельности вы можете использовать:

Котлин:

applicationContext

Java:

getApplication().getApplicationContext()
...