2017-02-18 26 views
-3

SharedPreferences код, написанный на фрагментарных class.This мой коддавая NullPointerException, когда я получаю данные с помощью sharedpreference

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

Это, как я называю метод GetData() от другой деятельности

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

Я не понимаю эту проблему. Почему я получаю nullpointerexception, когда я вызываю метод getData(). Я думаю, что мои данные успешно сохраняются. Когда я проверяю использование журнала, я возвращаю правильную строку обратно в saveData().

Это мой журнал

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

Смотрите этот пост: http://stackoverflow.com/questions/12074156/android-storing-retrieving-strings-with-shared-preferences –

+0

меня использовать это, но до сих пор я получаю такую ​​же проблему. После этого я добавлю свой журнал. –

ответ

0

В вашем методе getData, почему бы не использовать:

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

Проблема заключается в том, что вы пишете в другой файл и чтение данных из другого файла

Из документов: если вы используете getActivity(). GetPreferences (Context.MODE_PRIVATE), вы получаете файл sharedpref с именем ссылочной деятельности.

SharedPreferences getPreferences (режим INT)

считывают SharedPreferences объект для доступа к предпочтениям, которые частного к этой деятельности. Это просто вызывает метод getSharedPreferences (String, int), передав в качестве имени предпочтений имя этого класса .

И с PreferenceManager.getDefaultSharedPreferences (getActivity(). GetApplicationContext()), вы получите совершенно другой файл sharedpref под управлением рамки.

SharedPreferences getDefaultSharedPreferences (контекст Context)

Получает экземпляр SharedPreferences, который указывает на файл по умолчанию, который используется в рамках предпочтений в данном контексте.

 Смежные вопросы

  • Нет связанных вопросов^_^