我在我的用戶註冊活動中編輯了文本的(用戶名,名,姓和電子郵件地址)。用戶有權搜索他輸入的用戶名是否已經存在,方法是單擊搜索按鈕。如果用戶名已存在,則會顯示與該用戶名相關的所有信息,如用戶姓名。然而,如果用戶點擊按鈕,如果它不存在,我的應用程序崩潰,我得到CursorIndexOutOfBoundsException錯誤。我怎樣才能調試那個?搜索按鈕在Android中單擊時檢索數據庫中的數據
MainActivity.java
btn_Search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String searchableUser = txt_User.getText().toString();
ConsUserRegistration consUserRegistration = db.searchUser(searchableUser);
String searchUser = consUserRegistration.getUser().toString();
String searchFirst = consUserRegistration.getFirstName().toString();
String searchLast = consUserRegistration.getLastName().toString();
String searchEmail = consUserRegistration.getEmail().toString();
txt_User.setText(searchUser);
txt_First.setText(searchFirst);
txt_Last.setText(searchLast);
txt_Email.setText(searchEmail);
}
});
DatabaseHandler.java
public ConsUserRegistration searchUser(String username){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(Constants.TABLE_USER, new String[] {Constants.KEY_USER, Constants.KEY_FIRST,
Constants.KEY_LAST, Constants.KEY_EMAIL}, Constants.KEY_USER + " =? ",
new String[] { String.valueOf(username) }, null, null, null);
if (cursor != null)
cursor.moveToFirst();
ConsUserRegistration search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));
return search;
}
當它崩潰時,你可以得到一個堆棧跟蹤。我認爲崩潰發生在你的數據庫處理程序中,因爲你試圖訪問一個遊標而不檢查它是否爲空。在移至第一個位置之前檢查它是否爲空,但無論如何訪問它。 – ObieMD5
那麼我怎麼能編碼它沒有相同的錯誤? – androidBoomer