2016-07-14 10 views
0
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = pref.edit(); 
    float highscore = pref.getFloat("highscore",0.0f); 

このパーツを使用するアクティビティを入力すると、アプリがクラッシュします。 logcatによると、このコードブロックの最初の行はnullpointerExceptionを返します。重要な場合、この部分はOnCreateの後に来て、私はAndroid Studioを使用しています。アンドロイドアプリがクラッシュすることなくsharedpreferencesを使用することはできません

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)  
+1

nullポインタを取得している正確な行をポイントできますか?可能であれば、完全なコードを追加してください。 –

+1

[あなたのクラッシュに関連するJavaスタックトレースを調べるにはLogCatを使用してください](https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this)。クラッシュのトリガを理解できない場合は、Javaスタックトレース全体を送信してください。 – CommonsWare

+0

私が入れたコードスニペットの最初の行はヌルポインタを与えます。コードスニペットを削除すると問題が解決されるため、完全なコードを記述する必要はありません。 – superchampionoftheworld

答えて

0

理由:

はあなたがフラグメントからか、他のスレッドで、このコードを使用しているかもしれませ。アクティビティー・コンテキスト参照を引数として渡す必要があります。引数thisが問題です。

ソリューション:私は長い時間前に自分自身をこれを解決したが、その後、私はこれが未回答残っていたことに気づい

あなたは、引数

SharedPreferences pref = 
PreferenceManager.getDefaultSharedPreferences(Your_Activity_Name.this); 
+0

動作しませんでした。私はまだ同じエラーが発生し、クラッシュします。 – superchampionoftheworld

+0

コードをどこで正確に使用していますか?アクティビティまたは他のスレッドエンティティで –

+0

アクティビティ。 – superchampionoftheworld

-1

としての活性/コンテキストを渡す必要があります。どうやら、私はすべてのSharedPrefencesコードをonCreateに入れることになっています。

+0

それは本当ではありません。どこからでも共有設定を使用できます。あなたはアプリケーションコンテキストを使ってみましたか? – Hitesh

+0

私は実際にSPを定義する部分を意味しました。何らかの理由で、私がonCreateに移動するとすぐに、私はエラーが発生しません。 – superchampionoftheworld

関連する問題