0

This is the class I intend to use to access the SharedPreferences but when I run the app I get a NullPointerException.

public class UserPreferences extends PreferenceActivity{

private SharedPreferences prefs;

public UserPreferences(){
    prefs = getPreferences(Context.MODE_PRIVATE);
}
public String getBackupDirectoryPath(){
    return prefs.getString("backupPath", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath());
}
public void setBackupDirectoryPath(String path){
    Editor editor = prefs.edit();
    editor.putString("backupPath", path);
    editor.commit();
}

}

Here is the stack trace. The main problem is at row 14 in this class, that means here: prefs = getPreferences(Context.MODE_PRIVATE);

09-03 18:17:14.733: E/AndroidRuntime(1081): FATAL EXCEPTION: main
09-03 18:17:14.733: E/AndroidRuntime(1081): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.linicdecor/com.example.linicdecor.Settings}: java.lang.NullPointerException
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread.access$700(ActivityThread.java:154)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.os.Looper.loop(Looper.java:137)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread.main(ActivityThread.java:5306)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at java.lang.reflect.Method.invokeNative(Native Method)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at java.lang.reflect.Method.invoke(Method.java:511)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at dalvik.system.NativeStart.main(Native Method)
09-03 18:17:14.733: E/AndroidRuntime(1081): Caused by: java.lang.NullPointerException
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.Activity.getLocalClassName(Activity.java:4557)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.Activity.getPreferences(Activity.java:4590)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.example.linicdecor.UserPreferences.<init>(UserPreferences.java:14)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.example.linicdecor.MyFile.<init>(MyFile.java:21)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.example.linicdecor.Settings.initialize(Settings.java:30)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at com.example.linicdecor.Settings.onCreate(Settings.java:22)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.Activity.performCreate(Activity.java:5255)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
09-03 18:17:14.733: E/AndroidRuntime(1081):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
gdany
  • 104
  • 7
  • Sounds like Context is null, although that really looks like an enum. – Robert Harvey Sep 03 '14 at 15:20
  • You need to go back to the basics of Android : http://developer.android.com/training/basics/activity-lifecycle/starting.html#lifecycle-states I think getPreferences inside a constructor is a bad idea, probably better in onCreate – 2Dee Sep 03 '14 at 15:23
  • This is already marked as a duplicate, but here is a better duplicate: http://stackoverflow.com/questions/4517743/save-preferences – Bryan Herbst Sep 03 '14 at 15:25
  • Why do you have a constructor for preference activity? http://developer.android.com/reference/android/preference/PreferenceActivity.html. No constructors for Activity classes and you don't create an instance of Activity class. – Raghunandan Sep 03 '14 at 15:26

0 Answers0