2011-08-16 4 views
0

사용자가 옵션 메뉴에서 "로그 아웃"(R.Id.logout)을 선택할 때마다 널 포인터 예외가 발생합니다. 내가 초기화하지 않는 것을 알아낼 수 없다.공유 기본 설정을 지우면 Null 포인터 예외가 발생합니다.

@Override 
     public boolean onOptionsItemSelected(MenuItem item) 
     { 
      switch (item.getItemId()) 
      { 
       case R.id.settings:    
        return false; 
       case R.id.about: 
        this.startActivity(new Intent(this, About.class)); 
        return true; 
       case R.id.logout: 
        AlertDialog.Builder alertbox = new AlertDialog.Builder(this); 
        alertbox.setTitle("Logout"); 
        alertbox.setMessage("Logging out will remove your credentials from this phone. \nDo you want to logout?"); 
        alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() 
        {     
         public void onClick(DialogInterface dialog, int id) 
         { 
          Editor e = loginPref.edit(); 
          e.clear(); 

          Homepage.this.startActivity(new Intent(getApplicationContext(), Login.class)); 
          Homepage.this.finish();    
         } 
        }); 
        alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() 
        {     
         public void onClick(DialogInterface dialog, int id) 
         { 
          dialog.cancel();      
         } 
        }); 
        AlertDialog alert = alertbox.show(); 
        return true; 
      } 
      return false; 
     } 

로그 캣

08-16 10:09:49.705: ERROR/AndroidRuntime(1531): FATAL EXCEPTION: main 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531): java.lang.NullPointerException 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at org.*****.android.Homepage$1.onClick(Homepage.java:79) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at android.os.Looper.loop(Looper.java:123) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
08-16 10:09:49.705: ERROR/AndroidRuntime(1531):  at dalvik.system.NativeStart.main(Native Method) 
+0

logcat 오류 정보를 표시 할 수 있다면 null 포인터 예외를 얻을 수있는 위치를 알 수 있습니다. 또는 logcat을 확인하고 그 행에 주석을 달아주십시오. – Pratik

+0

어디에서 삭제하고 있습니까? ...? 더 많은 코드와 logcat을 게시하십시오 .. – ngesh

+0

당신은 logcat을 보여줄 수 있습니까? –

답변

0

그것은 매우 간단합니다. Homepage.java의 79 행에있는 것이 null입니다. 이 줄이 무엇인지 확인하고 게시하거나 전체 코드를 게시하십시오. 패키지 이름과 모든 것이 포함되어 있으므로 실제로 null이 맞는지 추측 할 수 있기 때문에 실제로 도움을받을 수 있습니다.

Editor e = loginPref.edit(); 

당신이 loginPref을 초기화 유무 :

내 첫번째 추측

은 loginPref 것?

+0

그게 문제가 아니 었어 loginPref = getSharedPreferences (PREFS_NAME, 0); – JonWells

관련 문제