2017-02-18 43 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实例。

相关问题