2011-01-25 111 views
0

檢查了很多其他問題和網站,找不到我正在尋找的內容。我正在做一個練習聯繫人列表...我想要做的是讓用戶能夠更新聯繫人的信息。當他們點擊一個聯繫人時,這些字段應該像現在一樣填寫,而不是空白的提示。現在的問題是,這些字段沒有填充,一切正常,但所有字段只是提示,而不是用戶在創建時爲聯繫人填寫的文本。下面是代碼:從SQLite數據庫中獲取信息:填充已填充的字段並更新行

ContacList.class的代碼...

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     mDbAdapter = new TagDBAdapter(this); 
     mDbAdapter.open(); 
     Cursor cursor = mCursor; 
     cursor.moveToPosition(position); 
     Intent intent = new Intent(this, AddEditContact.class); 
     intent.putExtra(TagDBAdapter.KEY_ROWID, id); 
     startActivityForResult(intent, ACTIVITY_EDIT); 
    } 

代碼爲AddEditContact.class

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.initLayout(); 
     mDbAdapter = new TagDBAdapter(this); 
     mDbAdapter.open(); 
     Bundle extras = getIntent().getExtras(); 
     mRowId = extras.getLong(TagDBAdapter.KEY_ROWID); 
     if(mRowId != null) { 
      mContact = mDbAdapter.fetchContact(mRowId); 
      m_firstNameEditE.setText(mContact.getFirstName()); 
      m_lastNameEditE.setText(mContact.getLastName()); 
      m_phoneNumberEdit.setText(mContact.getPhoneNumber()); 
      m_emailEditE.setText(mContact.getEmail()); 
      m_homePhoneEditE.setText(mContact.getHomePhone()); 
      m_workPhoneEditE.setText(mContact.getWorkPhone()); 
     } 
    } 

取接觸代碼

這裏是fetchContact代碼( )

public Contact fetchContact(long rowId) throws SQLException { 
     Contact contact = new Contact(); 
     Cursor mCursor = 
      mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_FIRSTNAME, KEY_LASTNAME, KEY_NAME, KEY_NUMBER, 
        KEY_EMAIL, KEY_HOMEPHONE, KEY_WORKPHONE}, KEY_ROWID + "=" + rowId, null, null, null, null, null); 
     if(mCursor != null) { 
      mCursor.moveToFirst(); 
     } 
     while(mCursor.moveToNext()) { 
      contact.setFirstName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_FIRSTNAME))); 
      contact.setLastName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_LASTNAME))); 
      contact.setName(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NAME))); 
      contact.setPhoneNumber(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_NUMBER))); 
      contact.setEmail(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_EMAIL))); 
      contact.setHomePhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_HOMEPHONE))); 
      contact.setWorkPhone(mCursor.getString(mCursor.getColumnIndexOrThrow(KEY_WORKPHONE))); 
     } 
     return contact; 
    } 

所以我從意圖獲得額外的東西,並獲得KEY_ROWID,如果它不爲null,則將EditTexts的文本設置爲getter方法,以獲取從fetchContact(long rowId)類獲取的聯繫對象,該類返回一個聯繫人對象。然後我將所有的EditTexts設置爲各自的getter。但是,當我在行動時,就像我說的那樣,它只是把所有的領域都留空,只有一個提示。

有什麼我在這裏失蹤?非常感謝。

我想到的一個潛在問題是我有兩個意圖要求此活動的結果,一個用於ACTIVITY_CREATE,一個用於ACTIVITY_EDIT。也許它得到了錯誤的意圖。

回答

0

您是否嘗試過調試或至少在您的代碼中放入一些Log.d()以打印出值?

您的mDbAdapter是由您編寫的嗎?也許有一些錯誤的fetchContact()

+0

這裏是fetchContact()的代碼 這裏不適合它,會把它放在原始問題文本中。 – JMRboosties 2011-01-25 10:49:30