-3

SharedPreferences code written in fragment class.This is my 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;
}

This is how I am calling the getData() method from other activity

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

I do not understand the problem. Why I am getting nullpointerexception when I calling getData() method. I think my data is successfully store.When I checking using Log I am getting correct string back in saveData().

This is my log

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) `
                                                                           `
Cœur
  • 37,241
  • 25
  • 195
  • 267

2 Answers2

0

In your getData method,why not use :

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

The problem is that you are writing to a different file and reading data from a different file

From the docs: if you use getActivity().getPreferences(Context.MODE_PRIVATE) you get a sharedpref file with the name of the reference activity.

SharedPreferences getPreferences (int mode)

Retrieve a SharedPreferences object for accessing preferences that are private to this activity. This simply calls the underlying getSharedPreferences(String, int) method by passing in this activity's class name as the preferences name.

And with PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()) you get altogether a different sharedpref file managed by framework.

SharedPreferences getDefaultSharedPreferences (Context context)

Gets a SharedPreferences instance that points to the default file that is used by the preference framework in the given context.

Majeed Khan
  • 505
  • 7
  • 16