Java 获取SharedReferences中的NullPointerException
我最近开始开发android。我可能在这个场景中缺乏一些知识。但是我搜索了很多,无法为这个项目提供解决方案。 面对这个问题,我没能弄明白。我的共享参考课程是Java 获取SharedReferences中的NullPointerException,java,android,nullpointerexception,sharedpreferences,Java,Android,Nullpointerexception,Sharedpreferences,我最近开始开发android。我可能在这个场景中缺乏一些知识。但是我搜索了很多,无法为这个项目提供解决方案。 面对这个问题,我没能弄明白。我的共享参考课程是 public class PermanentScoreHolder { public static boolean storeScore(String prefName,float score) { float temp = VarHolder.SHARED_PREFERENCES.getFloat(VarHolder.SUFFI
public class PermanentScoreHolder {
public static boolean storeScore(String prefName,float score)
{
float temp = VarHolder.SHARED_PREFERENCES.getFloat(VarHolder.SUFFIX_PREFERENCES+prefName, 0f);
if(temp<score)
{
VarHolder.EDITOR.putFloat(VarHolder.SUFFIX_PREFERENCES+prefName, score);
VarHolder.EDITOR.commit();
return true;
}
return false;
}
public static float getScore(String prefName)
{
return VarHolder.SHARED_PREFERENCES.getFloat(VarHolder.SUFFIX_PREFERENCES+prefName, 0f);
}
}
我的日志在这里:
FATAL EXCEPTION: main
Process: cafesoft.td.tappingtile, PID: 8740
java.lang.RuntimeException: Unable to start activity ComponentInfo{cafesoft.td.tappingtile/cafesoft.td.tappingtile.ScoreActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'float android.content.SharedPreferences.getFloat(java.lang.String, float)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6540)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'float android.content.SharedPreferences.getFloat(java.lang.String, float)' on a null object reference
at cafesoft.td.tappingtile.PermanentScoreHolder.getScore(PermanentScoreHolder.java:18)
at cafesoft.td.tappingtile.ScoreActivity.onCreate(ScoreActivity.java:98)
at android.app.Activity.performCreate(Activity.java:6980)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6540)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
我不明白这段代码出了什么问题。我需要一个解决方案,以及为什么会出现这种情况。您的
VarHolder。类PermanentScoreHolder
中的共享\u首选项具有空引用
这就是我们获取SharedReferences
实例的方式:
SharedPreferences pref = context.getSharedPreferences("unique_key", Context.MODE_PRIVATE);
然后从SharedReferences
获取float
:
pref.getFloat("key", defaultValue);
你能建议我在这里做什么吗?我已经更新了我的答案,但是我遇到了一个具体的问题,我知道什么是NullPointerException,但是我不能理解它。我不理解@JFPicard的问题
pref.getFloat("key", defaultValue);