Autore Topic: CursorIndexOutOfBoundsException  (Letto 534 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
CursorIndexOutOfBoundsException
« il: 23 Maggio 2011, 13:39:25 CEST »
0
Ciao ragazzi, ho un piccolo grande problema sulla gestione del mio cursor. Praticamente voglio recuperare l'attrivuto nome di un evento sistemato nel mio database:
ecco il codice:
Codice (Java): [Seleziona]
public class InfoEvent extends Activity {
       
        private AppDB db;
        private Cursor c;
        int id; //id dell'evento
        TextView tv_name;
        Button bu_coo;

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.info_event);
                Intent intent = getIntent();
                String pkg = getPackageName();
                id = intent.getIntExtra(pkg + ".myID", -1);
                tv_name = (TextView) findViewById(R.id.tv_infoEveName);
                bu_coo= (Button) findViewById(R.id.bu_infoEveCoo);
               
                db = new AppDB(getApplicationContext());
                db.open();
               
                String[] columnEve= new String[]{AppDB.eveName, AppDB.evePhoto, AppDB.eveLatitude, AppDB.eveLongitude};
                c= db.getEveInfo(columnEve, id);
                c.moveToFirst();
                tv_name.setText(c.getString(c.getColumnIndex(AppDB.eveName)));      CRASHA QUI
                //bu_coo.setText(c.getString(c.getColumnIndex(AppDB.eveLatitude)) + ", " + c.getString(c.getColumnIndex(AppDB.eveLongitude)) );

                db.close();
        }
}
e mi da questo logcat:
Codice: [Seleziona]
E/AndroidRuntime(  766): FATAL EXCEPTION: main
E/AndroidRuntime(  766): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.InfoEvent}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
E/AndroidRuntime(  766):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(  766):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  766):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  766):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  766):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  766):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  766):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  766):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  766):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  766):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  766):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  766):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  766): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
E/AndroidRuntime(  766):         at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
E/AndroidRuntime(  766):         at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
E/AndroidRuntime(  766):         at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
E/AndroidRuntime(  766):         at it.unipd.dei.es1011.droidgrill.InfoEvent.onCreate(InfoEvent.java:33)
E/AndroidRuntime(  766):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  766):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  766):         ... 11 more

La riga incriminata è questa:
Codice (Java): [Seleziona]
tv_name.setText(c.getString(c.getColumnIndex(AppDB.eveName)));      CRASHA QUIVoi che dite che sia? mi sembra di aver fatto tutto correttamente....
ciao!  ;-)



Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:CursorIndexOutOfBoundsException
« Risposta #1 il: 23 Maggio 2011, 14:27:32 CEST »
0
l'id passato è corretto?
può essere che la query restituisca un insieme vuoto?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:CursorIndexOutOfBoundsException
« Risposta #2 il: 23 Maggio 2011, 15:12:31 CEST »
0
risolto grazie! non avevo inizializzato correttamente il cursor :-P