/ / Donner NullPointerException lorsque j'obtiens des données à l'aide de sharedpreference [duplicate] - java, android, sqlite, nullpointerexception, sharedpreferences

Donner NullPointerException lorsque j'obtiens des données avec sharedpreference [duplicate] - java, android, sqlite, nullpointerexception, sharedpreferences

Code SharedPreferences écrit dans la classe fragment. C’est mon code

SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);

public void saveData(String name){
Log.e("saved",name);
editor = preferences.edit();
editor.putString("Text",name);
editor.commit();
}
public String getData(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
String text = preferences.getString("Text", null);
Log.e("save",text);
return text;
}

Voici comment j'appelle la méthode getData () depuis une autre activité

Stt stt = new Stt();
String name = stt.getData();

Je ne comprends pas le problème. Pourquoi je reçois nullpointerexception lorsque j'appelle la méthode getData () Je pense que mes données sont stockées avec succès. Lorsque je vérifie en utilisant Log, la chaîne correcte est retournée dans saveData ().

Ceci est mon journal

FATAL EXCEPTION: main`java.lang.RuntimeException: Unable to start activity `ComponentInfo{com.example.kartikeya_pc.sample/com.example.kartikeya_pc.sample.NaturalLanguage}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:371)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:366)
at com.example.kartikeya_pc.sample.Stt.getData(Stt.java:404)
at com.example.kartikeya_pc.sample.NaturalLanguage.onCreate(NaturalLanguage.java:28)
at android.app.Activity.performCreate(Activity.java:5203)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method) `
`

Réponses:

0 pour la réponse № 1

Dans ton getData méthode, pourquoi ne pas utiliser:

 SharedPreferences preferences = getActivity().getPreferences(Context.MODE_PRIVATE);

0 pour la réponse № 2

Le problème est que vous écrivez dans un fichier différent et lisez des données à partir d'un fichier différent.

Dans la documentation: si vous utilisez getActivity (). GetPreferences (Context.MODE_PRIVATE), vous obtenez un fichier sharedpref avec le nom de l'activité de référence.

SharedPreferences getPreferences (mode int)

Récupérer un objet SharedPreferences pour y accéderles préférences qui sont privé à cette activité. Cela appelle simplement le sous-jacent Méthode getSharedPreferences (String, int) en transmettant cette activité nom de classe comme nom de préférences.

Et avec PreferenceManager.getDefaultSharedPreferences (getActivity (). GetApplicationContext ()), vous obtenez un autre fichier sharedpref géré par framework.

SharedPreferences getDefaultSharedPreferences (contexte de contexte)

Obtient une instance SharedPreferences qui pointe vers le fichier par défaut utilisé par la structure de préférences dans le contexte donné.