我想实现一个检查全局应用程序级别的登录状态的代码,因此我创建了一个扩展Application类的ApplicationController类。
%c
但是当我运行应用程序时,它显示一条错误消息,由于nullpointerexception它无法创建应用程序。总结上面的日志,我的应用程序的三个部分中抛出了异常:
public class ApplicationController extends Application {
private static ApplicationController mInstance;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
SessionManager session = new SessionManager(getApplicationContext());
if(!session.isLoggedIn()) {
session.logout();
}
}
public static ApplicationController getInstance() {
return mInstance;
}
}
第一部分是ApplicationController类中的以下部分。
10-21 00:04:26.161 1397-1397/? E/AndroidRuntime: at com.marshall.opensurvey.application.session.SQLiteHandler.deleteUsers(SQLiteHandler.java:129)
10-21 00:04:26.161 1397-1397/? E/AndroidRuntime: at com.marshall.opensurvey.application.controller.SessionManager.logout(SessionManager.java:51)
10-21 00:04:26.161 1397-1397/? E/AndroidRuntime: at com.marshall.opensurvey.application.controller.ApplicationController.onCreate(ApplicationController.java:33)
其次,这是SessionManager类,logout方法导致NullPointerException。
SessionManager session = new SessionManager(getApplicationContext());
if(!session.isLoggedIn()) {
session.logout();
}
最后,上面logout()方法中的deleteUsers()方法导致NullPointerException。 deleteUsers()方法位于下面的SQLiteHandler类中。
public class SessionManager {
// LogCat tag
private static String TAG = SessionManager.class.getSimpleName();
// Shared Preferences
private SharedPreferences pref;
private Editor editor;
private Context _context;
private SQLiteHandler db = new SQLiteHandler(_context);
// Shared pref mode
private int PRIVATE_MODE = 0;
// Shared preferences file name
private static final String PREF_NAME = "OpenSurvey";
private static final String KEY_IS_LOGGEDIN = "isLoggedIn";
public SessionManager(Context context) {
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void setLogin(boolean isLoggedIn) {
editor.putBoolean(KEY_IS_LOGGEDIN, isLoggedIn);
// commit changes
editor.commit();
Log.d(TAG, "User login session modified!");
}
public boolean isLoggedIn(){
return pref.getBoolean(KEY_IS_LOGGEDIN, false);
}
public void logout() {
setLogin(false);
db.deleteUsers();
}
}
我知道NullPointerException是如此基本,我担心这个问题会给你带来负面的声誉,但是我用它工作了3个多小时仍然无法弄清楚问题是什么..所以请帮助我