2011-01-31 3 views
18

Di seguito sono i miei codici e ho ottenuto il android.database.CursorIndexOutOfBoundsException: indice -1 richiesto, con una dimensione di errore 2. Qualcuno può dirmi come risolverlo?android.database.CursorIndexOutOfBoundsException: indice -1 richiesto, con una dimensione di 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++; 
    } 
    } 
} 
} 
+0

Qual è 'phoneType'. Inoltre, è necessario modificare la domanda e formattare correttamente il codice. – Falmarri

+0

può essere questo errore sta venendo bcoz non è stato aggiunto nessun contatto in ur emulatore .......... –

+0

avete aggiunto delle autorizzazioni appropriate per AndroidManifest? – Sriram

risposta

61

Se si accede dati da Cursor oggetto quello che deve avere per posizionare l'oggetto Cursor.

In realtà si devono posizionare Cursor alla prima riga prima di tentare di accedere ai dati da esso.

Inserire la riga cur.moveToFirst(); dopo la riga Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); nel codice.

e garantire anche che non si sta utilizzando e più anziani API per il recupero contatti.

+0

TKS. ho un altro errore nw Causato da: java.lang.IllegalStateException: ottiene lo slot di campo dalla riga 0 col -1 non riuscito – user596379

+1

Significa probabilmente che stai usando un nome di colonna non valido. E se desideri solo leggere contatti (numeri di cellulare), allora dare un'occhiata a questa domanda http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2-0 –

+0

ok. tks. Proverò il collegamento. se ho altri qns lo posterò di nuovo. – user596379