Android NDK obtiene un error de ArrayList

JNIEXPORT jobject JNICALL Java_com_example_androidhellojni_FooFragmentTab_getUserList(JNIEnv *env, jobject obj) { jint i; jclass cls_arraylist = (*env)->FindClass(env, "java/util/ArrayList"); jmethodID init_arraylist = (*env)->GetMethodID(env, cls_arraylist, "<init>", "()V"); jobject obj_arraylist = (*env)->NewObject(env, cls_arraylist, init_arraylist, ""); if (obj_arraylist == NULL) LOGD("obj_arrlist fail"); jmethodID arraylist_add = (*env)->GetMethodID(env, cls_arraylist, "add", "(Ljava/lang/Object;)Z"); if (arraylist_add == NULL) LOGD("arraylist_add fail"); jclass cls_int = (*env)->FindClass(env, "java/lang/Integer"); jmethodID init_int = (*env)->GetMethodID(env, cls_int, "<init>", "(I)V"); for (i = 0; i < 10; i++) { jobject obj_int = (*env)->NewObject(env, cls_int, init_int, i); (*env)->CallObjectMethod(env, obj_arraylist, arraylist_add, obj_int); } return obj_arraylist; } 

Este es mi código de ejemplo para obtener ArrayList devolución de C a Java (Android), pero compilado y ejecutar existe algún mensaje de error como:

 art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethod does not match boolean java.util.ArrayList.add(java.lang.Object) art/runtime/check_jni.cc:65] in call to CallObjectMethod art/runtime/check_jni.cc:65] from java.util.ArrayList com.example.androidhellojni.FooFragmentTab.getUserList() 

El mensaje de error es bastante claro acerca de cuál es el problema:

the return type of CallObjectMethod does not match boolean java.util.ArrayList.add(java.lang.Object)

El type en Call<type>Method refiere al tipo del método, no al tipo de argumento (s) del método. Y el tipo del método es boolean , que no es un Object .

Por lo tanto, debe utilizar CallBooleanMethod para llamar a arraylist_add .

  • ¿Cómo sólo devolver ArrayList de cadenas con el número mínimo de apariciones?
  • ArrayList no se puede convertir en clase personalizada extendiendo ArrayList
  • Agregar varios valores en ArrayList en un índice único
  • Recorrer un arraylist de objetos y obtener el valor de cantidad máxima de objetos duplicados
  • Android: Ventana emergente: Se ha intentado finalizar un evento de entrada pero el receptor de eventos de entrada ya se ha eliminado
  • ¿Cuál es la mejor manera de guardar el contenido de una ArrayList?
  • Arraylist de clasificación de Android por propiedades
  • Pase de ArrayList <? implementa Parcelable> a Actividad
  • Agregar entrada de usuario de Editar texto a la vista de lista
  • Cómo recuperar los artículos de vuelta en arraylist una vez que se borra: Android
  • Ordenar Java ArrayList con letras antes de números
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.