android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为2

时间:2011-01-31 05:22:46

标签: android cursor contacts

下面是我的代码,我得到了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 个答案:

答案 0 :(得分:61)

如果您要访问Cursor对象的数据,那么您必须放置Cursor对象。

实际上,在尝试从中访问数据之前,您必须将Cursor置于第一行。

将行cur.moveToFirst();放在代码中的Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);行之后。

并确保您没有使用旧的API来检索联系人。