android.database.CursorIndexOutOfBoundsException: индекс -1 запрошен, с размером 2 - PullRequest
18 голосов
/ 31 января 2011

Ниже приведены мои коды, и я получил запрошенный android.database.CursorIndexOutOfBoundsException: Индекс -1, с размером 2 ошибки.Может кто-нибудь сказать мне, как это решить?

ContentResolver cr = getContentResolver();
  Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
    null, null, null, null);
  if (Integer.parseInt(cur.getString(
    cur.getColumnIndex(People.PRIMARY_PHONE_ID))) > 0) {

   Cursor pCur = cr.query(
     Contacts.Phones.CONTENT_URI, 
     null, 
     Contacts.Phones.PERSON_ID +" = ?", 
     new String[]{id}, null);
   int i=0;
   int pCount = pCur.getCount();
   String[] phoneNum = new String[pCount];
   String[] phoneType = new String[pCount];
   while (pCur.moveToNext()) {
    phoneNum[i] = pCur.getString(
      pCur.getColumnIndex(Contacts.Phones.NUMBER));
    phoneType[i] = pCur.getString(
      pCur.getColumnIndex(Contacts.Phones.TYPE));
    i++;
   } 
  }
 }
}

1 Ответ

61 голосов
/ 31 января 2011

Если вы обращаетесь к данным с объекта Cursor, вам необходимо разместить объект Cursor.

На самом деле вы должны поместить Cursor в первый ряд, прежде чем пытаться получить доступ к данным из него.

Поставьте строку cur.moveToFirst(); после строки Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); в своем коде.

А также убедитесь, что вы не используете устаревший API для получения контактов.

...