2014-09-22 114 views
-2

嗨,即時通訊嘗試建立一個Android應用程序與帳戶功能使用JSON與MYSQL。我能夠登錄,但每當我退出這會導致系統崩潰的onclick事件註銷按鈕導致我的Android應用程序崩潰

代碼片段

public void onClick(DialogInterface dialog,int which) { 
        UserFunctions logout = new UserFunctions(); 
        logout.logoutUser(getActivity()); 

這裏是我的註銷功能從我userfunctions類

public boolean logoutUser(Context context){ 
     // Clearing all data from Shared Preferences 
     editor.clear(); 
     editor.commit(); 

     // After logout redirect user to Loing Activity 
     Intent i = new Intent(_context, Login.class); 
     // Closing all the Activities 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     // Add new Flag to start new Activity 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     // Staring Login Activity 
     _context.startActivity(i); 

     return true; 

logcat的報告

09-22 16:47:11.278: E/AndroidRuntime(1455): FATAL EXCEPTION: main 
09-22 16:47:11.278: E/AndroidRuntime(1455): Process: com.learn2crack.tab, PID: 1455 
09-22 16:47:11.278: E/AndroidRuntime(1455): java.lang.NullPointerException 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at com.learn2crack.library.UserFunctions.logoutUser(UserFunctions.java:115) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at com.learn2crack.tab.Profile$2.onClick(Profile.java:92) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at android.os.Handler.dispatchMessage(Handler.java:102) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at android.os.Looper.loop(Looper.java:136) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at java.lang.reflect.Method.invoke(Method.java:515) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
09-22 16:47:11.278: E/AndroidRuntime(1455):  at dalvik.system.NativeStart.main(Native Method) 

我已經做了一些更多的尋找答案,並提出了添加此鱈魚Ë

public SessionManager(Context context){ 
     this._context = context; 
     pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
     editor = pref.edit(); 
    } 

但PREF_NAME,PRIVATE_MODE都具有錯誤行它說,它不能被解析到一個變量,但我看不要求任何聲明

+0

是的一切都被宣佈。 – user4068130 2014-09-22 20:53:20

+0

你是如何宣佈他們的? – pomber 2014-09-22 20:55:40

+0

我已經用它們在sessionmanager類編輯器編輯器中聲明的方式聲明瞭它; \t Context _context; – user4068130 2014-09-22 21:09:51

回答

0

堆棧跟蹤告訴你,例如問題出在UserFunctions的第115行。

這是嗎? (你不應該使用參數context?)

_context.startActivity(i); 

或者這個?

editor.clear(); 

編輯:
UserFunctions在logoutUser通話的前行創建。如果您沒有在UserFunctions的構造函數中初始化它們,則_contexteditor將爲空。

試試這個:

public static final String PREF_NAME = "whatever"; 

public boolean logoutUser(Context context){ 
     SharedPreferences pref = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = pref.edit(); 

     // Clearing all data from Shared Preferences 
     editor.clear(); 
     editor.commit(); 

     // After logout redirect user to Loing Activity 
     Intent i = new Intent(_context, Login.class); 
     // Closing all the Activities 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     // Add new Flag to start new Activity 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     // Staring Login Activity 
     context.startActivity(i); 

     return true; 
} 
+0

呵呵第115行確實是editor.clear();仍然不明白它有什麼問題呢? – user4068130 2014-09-22 21:08:08

+0

我更新了我的答案,現在註銷用戶只使用上下文參數 – pomber 2014-09-22 21:23:12

0

我能得到它與 INT PRIVATE_MODE = 0 initialazing private_mode工作; pomber用public static final String PREF_NAME =「whatever」初始化的答案; 給了我想法

+0

發佈答案的要點是什麼?用解決方案編輯原始問題。 – gipi 2014-09-22 21:35:31

+0

你不應該使用PRIVATE_MODE = 0,請使用[Context.MODE_PRIVATE](http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE)。 – pomber 2014-09-22 21:38:49