usar studio objeto from example data consultas como clase android cursor android-cursor

studio - get data from cursor android



No se pudo crear la ventana del cursor desde el cuaderno (3)

Probar otro hilo

new Thread(new Runnable(){ public void run(){ ...here all code }});

. Pero los códigos fuente de Android SDK se ven como 4.0.2_r1

130 private CursorWindow(Parcel source) {
131 mStartPos = source.readInt();
132 mWindowPtr = nativeCreateFromParcel(source);
133 if (mWindowPtr == 0) {
134 throw new CursorWindowAllocationException("Cursor window could not be "
135 + "created from binder.");
136 }
137 mName = nativeGetName(mWindowPtr);
138 mCloseGuard.open("close");
139 }
donde mWIndowPtr es Int

1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null); 2 if (cursor != null) { 3 if (cursor.moveToFirst()) { 4 first = cursor.getString(cursor.getColumnIndex("first")); 5 cursor.close(); 6 } 7 }

Luego, en la línea # 3 (de acuerdo con los registros), de vez en cuando me encuentro con esta excepción (extracto a continuación):

android.database.CursorWindowAllocationException: Cursor window could not be created from binder. at android.database.CursorWindow.<init>(CursorWindow.java:134) at android.database.CursorWindow.<init>(CursorWindow.java:41) at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:709) at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:707) at android.database.CursorWindow.newFromParcel(CursorWindow.java:718) at android.database.BulkCursorProxy.getWindow(BulkCursorNative.java:196)

...

¿Alguna idea de por qué está lanzando esta excepción? ¡Gracias!


Prueba de esta manera:

if (cursor != null) { cursor.moveToFirst(); do { first = cursor.getString(cursor.getColumnIndex("first")); }while(cursor.moveToNext());

}


Sospecho que el error puede estar relacionado con que no cierre sus cursores correctamente todo el tiempo. Tratar:

Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { first = cursor.getString(cursor.getColumnIndex("first")); } cursor.close(); ///// Changed here }

El cursor siempre debe estar cerrado (independientemente de si está vacío o no). Asegúrate de que el resto de tu aplicación también esté haciendo esto.