【发布时间】:2015-01-09 17:14:20
【问题描述】:
我正在使用 SharedPreferences 来获取一些保存的值。我只在某些设备上得到空指针异常。当我在自己的设备中测试代码时,我没有遇到任何问题。但是我的一些用户得到了错误。
这是我获取 SharedPreference 值的类:
public class SavingData {
public static final String PREFS_NAME = "MyPrefsFile";
public static MainActivity mainActivity;
public static int getRestTime() {
// Restore preferences
SharedPreferences settings = mainActivity.getSharedPreferences(PREFS_NAME, 0);
int restTime = settings.getInt("resttime", defaultRestTime); // 0 is the default
// value
return restTime;
}
在我的主类中,我声明了 mainActivity 变量。
SavingData.mainActivity = this;
这是我得到的错误:
java.lang.RuntimeException:无法启动活动
组件信息{com.playsimple.fitnessapp/com.playsimple.fitnessapp.ExerciseStartActivity}: java.lang.NullPointerException 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 在 android.app.ActivityThread.access$800(ActivityThread.java:139) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5086) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 在 dalvik.system.NativeStart.main(Native Method) 原因: java.lang.NullPointerException 在 com.playsimple.fitnessapp.data.SavingData.getDifficulty(SavingData.java:91) 在 com.playsimple.fitnessapp.ExerciseStartActivity.initExercise(ExerciseStartActivity.java:69) 在 com.playsimple.fitnessapp.ExerciseStartActivity.onCreate(ExerciseStartActivity.java:64) 在 android.app.Activity.performCreate(Activity.java:5248) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162) 组件信息{com.playsimple.fitnessapp/com.playsimple.fitnessapp.ExerciseStartActivity}: java.lang.NullPointerException 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:130) 在 android.app.ActivityThread.main(ActivityThread.java:3683) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:507) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647) 在 dalvik.system.NativeStart.main(Native Method) 原因: java.lang.NullPointerException 在 com.playsimple.fitnessapp.data.SavingData.getDifficulty(SavingData.java:91) 在 com.playsimple.fitnessapp.ExerciseStartActivity.initExercise(ExerciseStartActivity.java:69) 在 com.playsimple.fitnessapp.ExerciseStartActivity.onCreate(ExerciseStartActivity.java:64) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
【问题讨论】:
-
NullPointerException at com.playsimple.fitnessapp.data.SavingData.getDifficulty
标签: java android sharedpreferences