无法从android中的本机函数调用void java成员函数
我在android ndk中面临问题。当我尝试从cpp调用java nan静态成员函数时,我也没有得到任何运行时错误,但函数没有被调用。 但是当我尝试从cpp调用java静态成员函数时,我能够成功地调用,成员函数定义得到了成功执行无法从android中的本机函数调用void java成员函数,android,callback,android-ndk,Android,Callback,Android Ndk,我在android ndk中面临问题。当我尝试从cpp调用java nan静态成员函数时,我也没有得到任何运行时错误,但函数没有被调用。 但是当我尝试从cpp调用java静态成员函数时,我能够成功地调用,成员函数定义得到了成功执行 /********** For static member function */ /* This is the c code */ jmethodID method = env->GetStaticMethodID(interfaceClass, "cal
/********** For static member function */
/* This is the c code */
jmethodID method = env->GetStaticMethodID(interfaceClass, "callBack", "(Ljava/lang/String;)V");
if(!method) {
LOGE("Callback_handler: Failed to get the callback method");
return;
}
env->CallStaticVoidMethod(interfaceClass, method, js);
/* This is the function in the java */
public static void callBack(String s) {
Bundle b = new Bundle();
b.putString("callback_string", s);
Message m = Message.obtain();
m.setData(b);
//Sending to the handler
h.sendMessage(m);
}
上面的代码运行良好,但下面的代码不起作用
/********** For member function */
/* This is the c code */
jmethodID method = env->GetMethodID(interfaceClass, "callBack", "(Ljava/lang/String;)V");
LOGE("callback_handler: method %d", method);
if(!method) {
LOGE("Callback_handler: Failed to get the callback method");
return;
}
/* Call the callback function */
env->CallVoidMethod(interfaceClass, method, js);
/* This is the function in the java */
public void callBack(String s) {
Bundle b = new Bundle();
b.putString("callback_string", s);
Message m = Message.obtain();
m.setData(b);
//Sending to the handler
h.sendMessage(m);
}
如果我遗漏了什么,请告诉我
谢谢和问候,
SSuman185在调用成员函数时,不要将类实例用作类参数。将类的实例用作cls参数。然后我们也可以调用成员函数 答案由塞尔文给出,效果很好,但他没有回答,而是添加了评论。因此,我正在更新答案。请把这归功于他 谢谢和问候,
SSuman185您缺少类的实例,我认为interfaceClass是类实例,而不是类的实例更准确地说。。。interfaceClass是描述某种类型/类的对象。。。您需要创建此类型/类的对象,并将其传递给CallVoidMethodHi Selven,您的假设是正确的,interfaceClass在类实例中,而不是classobject的实例,请告诉我如何获取该对象的引用。谢谢Selvin,它现在正在工作。