Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取SharedReferences中的NullPointerException_Java_Android_Nullpointerexception_Sharedpreferences - Fatal编程技术网

Java 获取SharedReferences中的NullPointerException

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

我最近开始开发android。我可能在这个场景中缺乏一些知识。但是我搜索了很多,无法为这个项目提供解决方案。 面对这个问题,我没能弄明白。我的共享参考课程是

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);