2013-07-16 164 views
1

在我的活動中,我有editText的(用戶名,名,姓和電子郵件地址)。當用戶輸入現有用戶名時,他可以通過點擊搜索按鈕進行搜索,並且用戶擁有的數據將顯示在editText的數據中。搜索記錄並從數據庫中檢索它

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; 

} 

但是,當用戶單擊搜索按鈕,並沒有從輸入用戶名的EditText任何字符,我得到一個錯誤CursorIndexOutOfBoundsException在DatabaseHandler中:ConsUserRegistration search = new ConsUserRegistration(cursor.getString(0),cursor.getString(1),cursor.getString(2),cursor.getString(3));

此外,我無法從數據庫中檢索數據,因爲它正在崩潰。

+0

你有什麼問題 –

+0

哎呀,我很抱歉。剛剛編輯我的問題 – androidBoomer

+0

nullPointerExceptions在哪行代碼?看到logcat。 –

回答

1

變化

db.searchUser(searchableUser); 
ConsUserRegistration consUserRegistration = new ConsUserRegistration(); 

ConsUserRegistration consUserRegistration = db.searchUser(searchableUser); 
+0

您的建議代碼正在工作,但是當我沒有輸入用戶名時,我在DatabaseHandler中得到了CursorindexOutOfBoundsException:ConsUserRegistration search = new ConsUserRegistration(cursor.getString(0),cursor.getString(1),cursor.getString(2 ),cursor.getString(3)); – androidBoomer

+0

在使用字符串edittext之前檢查null .. – Tarun

+0

如何在代碼中執行此操作? – androidBoomer

-2

按鈕button_Search(按鈕)findViewById(r.I'd.itsIdInYourXml);

按鈕可能需要申報或進一步明確需要看到整個代碼