Я делаю простое приложение, у меня есть поле edittext и кнопка, кнопка имеет событие onclick. Код показан ниже:
private static final int CONTACT_PICKER_RESULT = 1;
public void doLaunchContactPicker(View view) {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
}
Я вызываю функцию выбора контактов. Когда я выбираю контакт, я хочу указать имя контакта в поле редактирования текста.
Код для этого, как показано ниже:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
String contactname = "";
// use the contact provider to get the contact details
Uri result = data.getData();
Cursor cursor = getContentResolver().query(result, null, null, null, null);
int idx = cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID);
contactname = cursor.getString(idx);
EditText name = (EditText) findViewById(R.id.editText1);
name.setText(contactname);
cursor.close();
}
Весь этот код включен в onCreate()
основной деятельности.
Когда я запускаю приложение в эмуляторе и нажимаю на кнопку, я получаю список контактов (я создал 3 контакта в эмуляторе). Когда я выбираю контакт, я получаю сообщение об ошибке в DDMS. ошибка:
06-09 19:24:16.188: ERROR/AndroidRuntime(7158): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1