2012-10-23 5 views
1

나는 다음이 코드를 사용 된 SharedPreferences에 뭔가를 저장하려합니다. 이것은 로그 캣입니다 :SharedPreference 널 포인터 예외

10-23 01:47:27.061: E/AndroidRuntime(408): FATAL EXCEPTION: main 
10-23 01:47:27.061: E/AndroidRuntime(408): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mobi.job.scout/com.mobi.job.scout.SignupActivity}: java.lang.NullPointerException 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.os.Looper.loop(Looper.java:123) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-23 01:47:27.061: E/AndroidRuntime(408): at java.lang.reflect.Method.invokeNative(Native Method) 
10-23 01:47:27.061: E/AndroidRuntime(408): at java.lang.reflect.Method.invoke(Method.java:521) 
10-23 01:47:27.061: E/AndroidRuntime(408): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-23 01:47:27.061: E/AndroidRuntime(408): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-23 01:47:27.061: E/AndroidRuntime(408): at dalvik.system.NativeStart.main(Native Method) 
10-23 01:47:27.061: E/AndroidRuntime(408): Caused by: java.lang.NullPointerException 
10-23 01:47:27.061: E/AndroidRuntime(408): at com.mobi.job.scout.SignupActivity.onCreate(SignupActivity.java:28) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
10-23 01:47:27.061: E/AndroidRuntime(408): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
10-23 01:47:27.061: E/AndroidRuntime(408): ... 11 more 

은, 제가 사용하고있는 코드에 어떤 문제가 있는지 알려주세요 난 항상 힘 가까이를 그만 둘. 감사합니다

답변

8
str = PreferenceManager.getDefaultSharedPreferences(this).getString(
       "signedUp", null); 

"signedUp"의 값에 이전에 설정된 값이 없으므로 변수 str이 null입니다. if 문에서 null을 확인하십시오.

if(str != null && str.equals("YES")){ 

참이면 str != null을 계속하지 않으면 계속됩니다.

+0

감사합니다. flynn. 그것은 효과가 있었다. 그것은 나에게 시간을 절약 해 주었다. –

+0

getString의 기본 반환 값을 null에서 빈 문자열로 변경할 수도 있습니다. "" –

+0

좋은 점. 이상적으로 기본 설정의 기본값 (예 : 비공개 정적 최종 문자열 DEFAULT_SIGNEDUP_VALUE = ""또는 내 예 = null)에 상수 값을 사용하고 싶습니다. 어느 쪽이든 작동합니다. – Flynn81