/ / podając NullPointerException, gdy otrzymuję dane przy użyciu sharedpreference [duplikat] - Java, Android, sqlite, nullpointerexception, sharedpreferences

dające wyjątek NullPointerException podczas pobierania danych przy użyciu sharedpreference [duplicate] - java, android, sqlite, nullpointerexception, sharedpreferences

Kod SharedPreferences napisany w klasie fragmentów. To jest mój kod

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;
}

W ten sposób wywołuję metodę getData () z innej aktywności

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

Nie rozumiem problemu. Dlaczego dostaję wyjątek nullpoint podczas wywoływania metody getData (). Wydaje mi się, że moje dane zostały pomyślnie zapisane. Kiedy sprawdzam za pomocą Loga, w saveData () otrzymuję ponownie prawidłowy ciąg znaków.

To jest mój dziennik

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) `
`

Odpowiedzi:

0 dla odpowiedzi № 1

W Twoim getData Metoda, dlaczego nie użyć:

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

0 dla odpowiedzi nr 2

Problem polega na tym, że piszesz do innego pliku i odczytujesz dane z innego pliku

Z dokumentacji: jeśli używasz getActivity (). GetPreferences (Context.MODE_PRIVATE), otrzymujesz plik sharedpref o nazwie działania referencyjnego.

SharedPreferences getPreferences (tryb int)

Pobierz obiekt SharedPreferences w celu uzyskania dostępupreferencje, które są prywatny do tego działania. To po prostu wywołuje podstawę getSharedPreferences (String, int) metoda przechodząc w tym działaniu nazwa klasy jako nazwa preferencji.

A dzięki PreferenceManager.getDefaultSharedPreferences (getActivity (). GetApplicationContext ()) otrzymujesz zupełnie inny plikpreprefed zarządzany przez framework.

SharedPreferences getDefaultSharedPreferences (kontekst kontekstowy)

Pobiera instancję SharedPreferences, która wskazuje na domyślny plik używany przez strukturę preferencji w danym kontekście.