2011-01-25 116 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