19

以下は私のコードで、次のようになりましたandroid.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 2 error. 誰かがそれを解決する方法を教えてもらえますか?

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++;
   } 
  }
 }
}
4

1 に答える 1

62

オブジェクトからデータにアクセスする場合は、オブジェクトCursorを配置する必要がありCursorます。

実際にはCursor、最初の行からデータにアクセスする前に、最初の行に移動する必要があります。

cur.moveToFirst();コードの次の行に追加Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);します。

また、連絡先を取得するために古い API を使用していないことも確認してください。

于 2011-01-31T06:30:46.230 に答える