Инициализация ViewModel во фрагменте Android java - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь инициализировать мой объект viewmodel в FirstFragment.java файле BasicActivity. Все тезисы четырех кодов не прошли. Документация не могла мне сильно помочь.

mViewModel = new ViewModelProvider(this).get(MyViewModel.class);
mViewModel = new ViewModelProvider(requireActivity()).get(MyViewModel.class);
mViewModel = new ViewModelProvider(getActivity()).get(MyViewModel.class);
mViewModel = new ViewModelProvider(FirstFragment.class).get(MyViewModel.class);

С другой стороны, public ViewModelProvider(@NonNull ViewModelStoreOwner owner) ViewModelProvider принимает ViewModelStoreOwner в качестве параметра, а в реализованном методе FragmentActivity.java ViewModelStore getViewModelStore() интерфейса ViewModelStore может использоваться фабричный шаблон.

@NonNull
        @Override
        public ViewModelStore getViewModelStore() {
            return FragmentActivity.this.getViewModelStore();
        }

Помогите мне инициализировать ViewModel

1 Ответ

2 голосов
/ 23 апреля 2020

Инициализация вашей viewModel выглядит следующим образом:

, если вы используете

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'

и инициализируйте вашу viewModel

viewModel = ViewModelProviders.of(this,viewModelFactory).get(MyViewModel.class);

, но теперь она устарела. Поэтому обновите зависимость следующим образом:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

и начальная точка зрения вашей модели представления выглядит следующим образом:

viewModel = new ViewModelProvider(this,viewModelFactory).get(MyViewModel.class);

viewModelFactory является необязательной.

...