2017-02-18 54 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(); 

我不明白這個問題。爲什麼我在調用getData()方法時得到nullpointerexception。我認爲我的數據是成功存儲的。當我使用Log進行檢查時,我在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(上下文語境)

獲取指向所使用的在給定上下文偏好框架默認文件一個SharedPreferences實例。

相關問題