Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
如果android应用程序没有崩溃,我无法使用SharedReferences_Android - Fatal编程技术网

如果android应用程序没有崩溃,我无法使用SharedReferences

如果android应用程序没有崩溃,我无法使用SharedReferences,android,Android,我一进入使用此部件的活动,应用程序就会崩溃。根据logcat,这个代码块中的第一行给出了一个nullpointerException。如果重要的话,这部分在OnCreate之后,我使用的是Android Studio SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = pref.edit(); float hi

我一进入使用此部件的活动,应用程序就会崩溃。根据logcat,这个代码块中的第一行给出了一个nullpointerException。如果重要的话,这部分在OnCreate之后,我使用的是Android Studio

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = pref.edit();
    float highscore = pref.getFloat("highscore",0.0f);
原因:

您可能正在使用来自片段或其他线程的代码。您需要将活动上下文引用作为参数传递。这就是问题所在

解决方案:

您需要将活动/上下文作为参数传递

Logcat:FATAL EXCEPTION: main
                                                                                 Process: com.nonexistent.rs.guessthenumber, PID: 4388
                                                                                 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.nonexistent.rs.guessthenumber/com.nonexistent.rs.guessthenumber.main}: java.lang.NullPointerException
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:175)
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                     at android.os.Looper.loop(Looper.java:146)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5602)
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                     at dalvik.system.NativeStart.main(Native Method)
                                                                                  Caused by: java.lang.NullPointerException
                                                                                     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:185)
                                                                                     at com.nonexistent.rs.guessthenumber.main.<init>(main.java:141)
                                                                                     at java.lang.Class.newInstanceImpl(Native Method)
                                                                                     at java.lang.Class.newInstance(Class.java:1208)
                                                                                     at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2297)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) 
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:175) 
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                     at android.os.Looper.loop(Looper.java:146) 
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5602) 
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                                                                     at dalvik.system.NativeStart.main(Native Method) 
07-14 10:17:04.616 6030-6030/com.nonexistent.rs.guessthenumber E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                 Process: com.nonexistent.rs.guessthenumber, PID: 6030
                                                                                 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.nonexistent.rs.guessthenumber/com.nonexistent.rs.guessthenumber.main}: java.lang.NullPointerException
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:175)
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                     at android.os.Looper.loop(Looper.java:146)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5602)
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                     at dalvik.system.NativeStart.main(Native Method)
                                                                                  Caused by: java.lang.NullPointerException
                                                                                     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:185)
                                                                                     at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:369)
                                                                                     at com.nonexistent.rs.guessthenumber.main.<init>(main.java:142)
                                                                                     at java.lang.Class.newInstanceImpl(Native Method)
                                                                                     at java.lang.Class.newInstance(Class.java:1208)
                                                                                     at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2297)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) 
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:175) 
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                     at android.os.Looper.loop(Looper.java:146) 
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5602) 
                                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                     at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                                                                     at dalvik.system.NativeStart.main(Native Method) 

很久以前我自己解决了这个问题,但后来我意识到这个问题没有得到回答。显然,我应该把所有SharedReferences代码放在onCreate中

你能指出得到空指针的确切位置吗?如果可能,请添加完整代码。。如果您不理解崩溃的触发器,请发布整个Java堆栈跟踪。我不认为我需要完整的代码,因为去掉代码片段可以解决问题。您是否尝试确定是哪个值导致空指针异常?您可以发布整个.java文件吗?这是什么课?没用。我仍然会遇到同样的错误,然后崩溃。好吧,你到底在哪里使用代码?在活动或其他线程实体上?是否定义了默认共享首选项,如PreferenceManager.SetDefaultValues?问题在于根据堆栈跟踪的上下文。因此,请尝试传递getApplicationContext作为替换此/Activity\u name的参数。这是如何设置DefaultValue的?这不是真的。您可以在任何地方使用共享首选项。您是否尝试过使用应用程序上下文。我指的是实际定义SP的部分。出于某种原因,当我将其移动到onCreate时,我没有收到任何错误。
    SharedPreferences pref = 
PreferenceManager.getDefaultSharedPreferences(Your_Activity_Name.this);