J'essaie de lire les références partagées à l'intérieur de Fragment. Mon code est ce que j'utilise pour obtenir des préférences dans toute autre activité.
SharedPreferences preferences = getSharedPreferences("pref", 0);
J'ai une erreur
Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper
J'ai essayé de suivre ces liens mais sans succès Accès à SharedPreferences par des méthodes statiques et Static SharedPreferences . Merci pour toute solution.
La méthode getSharedPreferences
est une méthode de l'objet Context
. Il ne suffit donc pas d'appeler getSharedPreferences à partir d'un Fragment
car ce n'est pas un contexte! (L'activité étant une extension du contexte, nous pouvons appeler getSharedPreferences depuis celui-ci).
Donc, vous devez obtenir votre contexte d'applications par
// this = your fragment
SharedPreferences preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
La réponse marquée ne fonctionnait pas pour moi, je devais utiliser
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
MODIFIER:
Ou essayez simplement de supprimer le this
:
SharedPreferences prefs = getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
Par prudence, la réponse fournie par l’utilisateur situé au-dessus de moi est correcte.
SharedPreferences preferences = this.getActivity().getSharedPreferences("pref",0);
Cependant, si vous tentez de récupérer quelque chose dans le fragment avant d'appeler onAttach, getActivity () renverra la valeur null.
Cela a fait le tour pour moi
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
Vérifiez ici https://developer.Android.com/guide/topics/ui/settings.html#ReadingPrefs
getActivity()
et onAttach()
ne m'ont pas aidé dans la même situation
Peut-être que j'ai fait quelque chose de mal
mais! J'ai trouvé une autre décision
J'ai créé un champ Context thisContext
à l'intérieur de mon fragment
Et obtient un contexte actuel de la méthode onCreateView
et maintenant je peux travailler avec pref partagé à partir de fragment
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
thisContext = container.getContext();
...
}
Vous pouvez créer la méthode SharedPrefences
dans onAttach
de fragment comme ceci:
@Override
public void onAttach(Context context) {
super.onAttach(context);
SharedPreferences preferences = context.getSharedPreferences("pref", 0);
}
Pour définir la préférence dans Fragment:SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR",Context.MODE_PRIVATE); editor.putString("credi_credito",cre); editor.commit();
Pour appeler une autre activité ou fragmenter les données de préférence:SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR", Context.MODE_PRIVATE); credit=pref.getString("credi_credito",""); if(credit.isNotEmpty)...