Ich versuche, SharedPreferences in Fragment zu lesen. Mein Code wird verwendet, um Einstellungen für andere Aktivitäten abzurufen.
SharedPreferences preferences = getSharedPreferences("pref", 0);
Ich bekomme einen Fehler
Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper
Ich habe versucht, diesen Links zu folgen, aber ohne Erfolg Zugriff auf SharedPreferences über statische Methoden und statische SharedPreferences . Vielen Dank für jede Lösung.
android
android-fragments
sharedpreferences
Kennzeichen
quelle
quelle
this
Schlüsselwort dabei erforderlichthis.getActivity().getShared..
?Die markierte Antwort hat bei mir nicht funktioniert, ich musste verwenden
BEARBEITEN:
Oder versuchen Sie einfach, Folgendes zu entfernen
this
:quelle
Aus Vorsicht ist diese Antwort des Benutzers über mir korrekt.
Wenn Sie jedoch versuchen, etwas in dem Fragment abzurufen, bevor onAttach getActivity () heißt, wird null zurückgegeben.
quelle
Sie können die
SharedPrefences
In-onAttach
Methode des Fragments wie folgt erstellen:quelle
Das hat den Trick für mich getan
Überprüfen Sie hier https://developer.android.com/guide/topics/ui/settings.html#ReadingPrefs
quelle
getActivity()
undonAttach()
hat mir in der gleichen Situation nicht geholfen,vielleicht habe ich etwas falsch gemacht,
aber! Ich habe eine andere Entscheidung gefunden.
Ich habe ein Feld
Context thisContext
in meinem Fragment erstelltund einen aktuellen Kontext von der Methode onCreateView erhalten.
Jetzt kann ich mit gemeinsam genutzten Einstellungen aus dem Fragment arbeiten
quelle
So definieren Sie die Einstellung in Fragment:
SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR",Context.MODE_PRIVATE); editor.putString("credi_credito",cre); editor.commit();
So rufen Sie eine andere Aktivität auf oder fragmentieren die Präferenzdaten:
SharedPreferences pref = getActivity().getSharedPreferences("CargaDatosCR", Context.MODE_PRIVATE); credit=pref.getString("credi_credito",""); if(credit.isNotEmpty)...
quelle
Es ist möglich, einen Kontext aus a heraus zu erhalten
Fragment
Mach einfach
Sie können auch eine angebaute
AndroidViewModel
in demonCreateView
Verfahren , dass Geräte eine Methode , die den Anwendungskontext zurückgibtquelle