web-dev-qa-db-fra.com

ViewModelProviders.of (getActivity ()) "Impossible de résoudre la méthode de (Android.app.Activity)"

J'essaie actuellement de partager des données entre mes deux fragments à l'aide d'un modèle de vue Android ViewModels .

Dans cet article, ils utilisent "ViewModelProviders.of (getActivity ()). Get (SharedViewModel.class);" dans le fragment pour obtenir le modèle.

Mon problème est que lorsque j'écris exactement la même ligne dans mon fragment, j'obtiens une erreur "Impossible de résoudre la méthode (Android.app.Activity)"

model = ViewModelProviders.of(getActivity()).get(UserAccountViewModel.class);

Quelqu'un peut il m'aider avec ça ?

9
Tobias420d

ViewModelProviders requiert que vous utilisiez FragmentActivity (ou quelque chose qui en dérive), et non Activity, comme classe de base de vos activités.

11
CommonsWare

Vous pouvez également obtenir une erreur similaire comme Cannot resolve method 'of(Android.support.v4.app.FragmentActivity)' de ViewModelProviders.of(getActivity()) si vous essayez d'importer androidx dans votre fichier gradle alors que votre application utilise toujours Android.support.v4

Ceci est différent de la question posée mais est dans le même stade et se classe premier dans Google lorsque j'ai eu le problème, donc je le poste!

1
georgiecasey

Il suffit de lancer getActivity () sur une activité spécifique. Ça marche pour moi. Par exemple:

model = ViewModelProviders.of((MainActivity)getActivity()).get(UserAccountViewModel.class);
0
KeitL