我在我的應用程序上使用本地登錄系統。爲什麼我的登錄屏幕崩潰?
的一點是簡單地搜索在給定的數據庫的用戶名,提取正確的數據庫條目,然後比較密碼(很簡單,不是嗎?)
但是,我得到一個強制關閉我的活動。下面你有我使用
代碼DB功能:
public Cursor loginUser(String username) throws SQLException{
String[] columns = new String[] {KEY_ROW_ID_USER, KEY_USER_NAMES, KEY_USER_PASSWORDS, KEY_USER_ACCESS};
String whereClause = KEY_USER_ACCESS+"='" + username+ "'";
Cursor cursor = db.query(USERS_TABLE, columns, whereClause, null, null, null, null);
if(cursor != null){
cursor.moveToFirst();
}
return cursor;
}
正開始將對DBAdapter:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.loginscreen);
dbAdapter = new PirelliDBAdapter(this);
.......................................
該函數的呼喚:
loginButton.setOnClickListener(new OnClickListener(){
public void onClick(View view){
username = usernameInput.getText().toString();
password = passwordInput.getText().toString();
Cursor c = dbAdapter.loginUser(usernameInput.getText().toString());
}
});
最後的錯誤日誌:
03-11 01:08:25.225: W/dalvikvm(1563): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-11 01:08:25.235: E/AndroidRuntime(1563): FATAL EXCEPTION: main
03-11 01:08:25.235: E/AndroidRuntime(1563): java.lang.NullPointerException
03-11 01:08:25.235: E/AndroidRuntime(1563): at pirelli.app.dbadapter.PirelliDBAdapter.loginUser(PirelliDBAdapter.java:391)
03-11 01:08:25.235: E/AndroidRuntime(1563): at pirelli.app.LoginScreen$8.onClick(LoginScreen.java:176)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.view.View.performClick(View.java:3110)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.view.View$PerformClick.run(View.java:11934)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Handler.handleCallback(Handler.java:587)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Handler.dispatchMessage(Handler.java:92)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Looper.loop(Looper.java:132)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.app.ActivityThread.main(ActivityThread.java:4123)
03-11 01:08:25.235: E/AndroidRuntime(1563): at java.lang.reflect.Method.invokeNative(Native Method)
03-11 01:08:25.235: E/AndroidRuntime(1563): at java.lang.reflect.Method.invoke(Method.java:491)
03-11 01:08:25.235: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-11 01:08:25.235: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-11 01:08:25.235: E/AndroidRuntime(1563): at dalvik.system.NativeStart.main(Native Method)
對此的任何幫助將是偉大的。我真的很爲難,不能看着辦吧......
你能發佈PirelliDBAdapter的更多代碼,以及它在何處/如何初始化?看起來像db可能是空的? – antonyt 2012-03-10 23:43:05
似乎你的分貝是空的! – 2012-03-10 23:56:16
適配器類的長度超過1000行,並在許多其他活動中成功使用。我真的不明白如何可以爲空。你的意思是表格本身是空的,只需插入幾個用戶即可解決問題。 (不在家,現在不能嘗試) – Eugen 2012-03-11 01:21:08