我正在学习 android 和 JNI。在 Java 中,从一个按钮单击一个 JNI 被调用。在被调用的 JNI 中,我回调到 Java。 省略错误处理并尝试调用没有参数的静态 void 方法:
void Java_com_example_ndk2_AndroidNDK1SampleActivity_callme(JNIEnv * env, jobject this, int i)
{
jclass handlerClass = (*env)->FindClass(env, "com/example/ndk2/AndroidNDK1SampleActivity");
jmethodID mid = (*env)->GetStaticMethodID(env, handlerClass, "JavaCallback","()V");
(*env)->CallStaticVoidMethod(env, mid, NULL);
}
FindClass
和 GetStaticMethodID
不返回错误。在回调到 Java 时,Logcat 从 dalvikvm 指示:decodeIndirectRef 中的间接引用 0xxxx 无效。欢迎提出任何建议。
最佳答案
在调用不带任何参数的方法(“()V”)时删除您传递的参数(NULL)。
关于java - 在 Android 上,Java 可以调用 JNI,然后 JNI 调用回 Java 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327584/