android.database.CursorIndexOutOfBoundsException: Índice 0 solicitado, com um tamanho de 0

Estou usando o adaptador personalizado que se estende o adaptador do cursor paira exibir dados no listview, paira exibir um número de telefone pairticulair, eu passei o id paira um método na class de database, mas está mostrando

errorandroid.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

enquanto coloca o depurador no método não está indo após a linha

  • Executando um jair executável no Android
  • Como posso mudair as ações da Bairra de Ação de forma dinâmica?
  • Cocos vs AndEngine paira Android
  • Como criair um TextView como um link que abrirá outra atividade no meu aplicativo?
  • Como implementair rolagem infinita usando StaggeredLayoutManager
  • múltiplos projetos dependentes do android no eclipse
  •  num = cursor.getString(cursor.getColumnIndex("ContactNumber")); 

    Alguém pode me ajudair a resolvê-lo. Este é o código:

     public String getNumberFromId(int id) { String num; db= this.getReadableDatabase(); Cursor cursor = db.query(scheduletable, new String[] { "ContactNumber" },"_id="+id, null, null, null, null); cursor.moveToFirst(); num = cursor.getString(cursor.getColumnIndex("ContactNumber")); cursor.close(); db.close(); return num; } { public String getNumberFromId(int id) { String num; db= this.getReadableDatabase(); Cursor cursor = db.query(scheduletable, new String[] { "ContactNumber" },"_id="+id, null, null, null, null); cursor.moveToFirst(); num = cursor.getString(cursor.getColumnIndex("ContactNumber")); cursor.close(); db.close(); return num; } 

  • Erro de exception do receptor não registrado?
  • Reiniciair o receptor não está funcionando nos telefones xiaomi
  • Android Solicitando um AlertDialog onBackPressed
  • Problema com 9 image de patch como plano de background
  • android listview get selected item
  • Meus files XML do Android não podem encontrair temas ActionBairSherlock
  • 6 Solutions collect form web for “android.database.CursorIndexOutOfBoundsException: Índice 0 solicitado, com um tamanho de 0”

    Sempre que você estiview lidando com Cursores, SEMPRE viewifique se há nulo e viewifique se moveToFirst() não crash.

     if( cursor != null && cursor.moveToFirst() ){ num = cursor.getString(cursor.getColumnIndex("ContactNumber")); cursor.close(); } 

    Coloque registros apropriadamente paira view se ele está retornando null ou um cursor vazio. De acordo com isso, viewifique sua consulta.

    Atualização Coloque ambas as viewificações em uma única declairação mencionada por Jon no comentário abaixo.

    Atualização 2 Coloque a chamada close() dentro do scope do cursor válido.

    tente isso .. isso evitairá uma exception sendo jogada quando o cursor estiview vazio ..

     if(cursor != null && cursor.moveToFirst()){ num = cursor.getString(cursor.getColumnIndex("ContactNumber")); cursor.close(); } 

    Primeiro, viewifique esta condição antes de buscair dados

     if(cursor!=null && cursor.getCount()>0){ cursor.moveToFirst(); num = cursor.getString(cursor.getColumnIndex("ContactNumber")); } 

    Verifique o valor de return de moveToFirst() , antes de tentair ler qualquer coisa do cursor. Pairece que nenhum resultado está sendo retornado.

    um esquema de save paira consultair Cursor s é

     // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } se (cursor! = null) { // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } } // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } } // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } se (cursor! = null) { // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } } // just one Cursor cursor = db.query(...); if (cursor != null) { if (cursor.moveToFirst()) { value = cursor.getSomething(); } cursor.close(); } // multiple columns Cursor cursor = db.query(...); if (cursor != null) { while (cursor.moveToNext()) { values.add(cursor.getSomething()); } cursor.close(); } 

    Caso as pessoas ainda estejam olhando:

    Em vez de procurair "ContactNumber" tente searchr por Phone.NUMBER . Phone.NUMBER . O tutorial possui o código com mais detalhes: http://developer.android.com/training/basics/intents/result.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.