Класс не может наследоваться от AndroidViewModel, почему? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь создать новый класс, который наследует от AndroidViewModel, например:

public class LoginViewModel extends AndroidViewModel {

       public LoginViewModel() {}
...

Но я получаю это сообщение в ide:

В конструкторе по умолчанию нет доступных'android.arch.lifecycle.AndroidViewModel'

Может случиться так?

Мой градл выглядит так:

...
    implementation 'android.arch.lifecycle:extensions:1.1.1'
...

Есть идеи?

Спасибо

Ответы [ 3 ]

0 голосов
/ 31 января 2019

https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel

Подклассы должны иметь конструктор, который принимает Application как единственный параметр.

0 голосов
/ 31 января 2019

Вам нужно будет добавить супер вызов AndroidViewModel класс при наследовании от него.AndroidViewModel класс содержит конструктор по умолчанию с Application классом в качестве переменной, поэтому вы должны изменить свою реализацию, как показано ниже:

public class LoginViewModel extends AndroidViewModel {

   public LoginViewModel(Application application) {
       super(application);
       // Do rest of your stuff here ...
   }
...

Реализация по умолчанию AndroidViewModel состояний классачто:

Application с учетом контекста ViewModel.

Подклассы должны иметь конструктор, который принимает Application в качестве единственного параметра.

0 голосов
/ 31 января 2019

AndroidViewModel имеет только один открытый конструктор, который принимает Application в качестве параметра.Вы должны вызвать это из вашего конструктора:

public LoginViewModel(Application app) {
    super(app);
}
...