Курсор Android от основного исключения - PullRequest
0 голосов
/ 09 июня 2011

Я делаю простое приложение, у меня есть поле 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

1 Ответ

1 голос
/ 01 апреля 2012

Сначала вы должны позвонить cursor.moveToFirst().Первая позиция курсора всегда -1.

...