проверил много других вопросов и сайтов, не смог найти то, что искал.Я делаю список контактов для практики ... я пытаюсь дать пользователю возможность обновить информацию о контакте.Когда они нажимают на контакт, поля должны быть заполнены, как они уже есть, а не быть пустым с подсказкой.Проблема теперь в том, что поля не заполнены, все остальное работает просто отлично, но все поля просто содержат подсказки вместо текста, который пользователь заполнил для контакта при создании.Вот код:
Код 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, и, если он не нулевой, задаю текст EditTexts для получателейдля объекта контакта, который я получил из класса fetchContact (long rowId), который возвращает объект Contact.Затем я устанавливаю все EditTexts для их соответствующих получателей.Но когда в действии, как я уже сказал, он просто оставляет все поля пустыми, с одним лишь подсказкой.
Есть ли что-то, что я здесь упускаю?Большое спасибо.
Одна потенциальная проблема, о которой я подумал, состояла в том, что у меня есть два намерения, которые запрашивают результат от этого действия, одно для ACTIVITY_CREATE и одно для ACTIVITY_EDIT.Может быть, это неправильное намерение.