Android – IllegalStateException: cursor.getString (idx) no debe ser nulo
He seguido todas las cosas aquí, pero ¿Por qué cursor.getString(idx)
dice que no debe ser null
? Suministro todos los parameters necesarios …
aquí está mi getfilepath
:
- No se puede comstackr Android Project con Kotlin en TeamCity
- socket de server que escucha en el cliente frente al service de votación para la aplicación de postría instantánea de Android
- La function de copy de class de datos Kotlin no funciona
- Androide. establezca textSize para que su altura coincida con un porcentaje de la altura de sus layouts principales: ¿es posible?
- ¿Cómo agregar la vista mediante progtwigción en el layout Restricción?
fun getFilePathFromUri(context: Context, imageURI: Uri): String? { var cursor : Cursor? = null var result: String try { val projection = arrayOf(MediaStore.Images.Media.DATA) cursor = context.contentResolver.query(imageURI, projection, null, null, null) if (cursor == null) { result = imageURI.path } else { Log.d(AppConstants.TAG, "Path_img = " + imageURI) Log.d(AppConstants.TAG, "Path_pth = " + imageURI.path) Log.d(AppConstants.TAG, "Path_cursor = " + cursor) cursor.moveToFirst() val idx = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA) result = cursor.getString(idx) } return result } finally { cursor!!.close() } }
aquí está el error:
12-04 14:34:44.971 2008-2008/com.xxx.project k E/AndroidRuntime: FATAL EXCEPTION: main Process: com.xxx.proj, PID: 2008 java.lang.IllegalStateException: cursor.getString(idx) must not be null at com.xxx.proj.utils.ImageUtils$Companion.getFilePathFromUri(ImageUtils.kt:78) at com.xxx.proj.api.Layer.createNewLayer(Layer.java:84) at com.xxx.proj.dialog.EventMapCreationDialog.registerNewMap(EventMapCreationDialog.kt:266) at com.xxx.proj.dialog.EventMapCreationDialog.onClick(EventMapCreationDialog.kt:82) at android.view.View.performClick(View.java:5204) at android.view.View$PerformClick.run(View.java:21153) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
- La configuration 'comstackr' está obsoleta, pero todas las configuraciones son 'implementación'
- cómo comstackr kotlin en el proyecto web eclipse maven
- ¿Por qué spring-data-elasticsearch no usa el objectmapper desde el context de spring?
- Cómo definir arralist globally en kotlin
- ¿Puede la class de datos Kotlin tener más de un constructor?
- El argumento de tipo genérico no está dentro de los límites
- Google Assistant SDK rechaza el canal autenticado como "UNAUTHENTICATED"
- Disparador usando Teamcity Kotlin DSL
Según la documentation de cursor.getString ():
Devuelve el valor de la columna solicitada como una cadena.
El resultado y si este método arroja una exception cuando el valor de la columna es nulo o el tipo de columna no es un tipo de cadena está definido por la implementación.
IllegalStateException
una IllegalStateException
. Aunque es amplio, esto generalmente significa que se ha invocado un método en un momento incorrecto / ilegal. Es decir, la aplicación o el entorno no está en el estado adecuado para este método. Esto podría significar que el parámetro, cursor o valor es nulo.
Verifique el tipo de devolución de la columna antes de llamar al método:
if (cursor.getType(idx) == FIELD_TYPE_STRING) { result = cursor.getString(idx); }