【发布时间】:2020-07-24 09:32:49
【问题描述】:
我正在尝试通过Android 类android.view.View 上的JNI 获取一些methodID。我设法通过 JNI 获得了许多其他方法,但是 JNI 找不到在 android.view.View 中实现的另一种方法,以及我尝试获得的另一种方法(setLayoutParams)。这是我使用的代码,我最终得到了找不到方法的日志。还有一个 noSuchMethodError 异常。
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
JNIEnv *env;
int status;
status = (*vm)->GetEnv(vm, (void **) &env, JNI_VERSION_1_4);
if (status < 0) {
status = (*vm)->AttachCurrentThread(vm, (void **) &env, NULL);
if (status < 0) { return -1; }
}
jclass cView = (*env)->FindClass(env, "android/view/View");
if (cView == NULL) {
__android_log_write(ANDROID_LOG_DEBUG, "JNI", "can not find the class View ");
return -1;
}
jmethodID mSetOnClickListener = (*env)->GetMethodID(env, cView, "setOnClickListener", "(Landroid/view/View/OnClickListener;)V");
if (mSetOnClickListener == NULL) {
__android_log_write(ANDROID_LOG_DEBUG, "JNI", "can not find the method setOnClickListener");
return -1;
}
return 0;
}
它与 View 类有关吗?我怎样才能得到这个方法?
【问题讨论】:
标签: java android c android-ndk java-native-interface