我在android-ndk中遇到问题。当我尝试从cpp调用java nan-static成员函数时,我也没有收到任何运行时错误,但函数没有被调用。
但是当我尝试从cpp调用java静态成员函数时,我能够成功调用,成员函数定义将成功执行。
/********** 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
答案 0 :(得分:0)
在调用成员函数期间,不要将类实例用作类参数。使用类的实例作为cls参数。那么我们也可以调用成员函数。
Selvin给出了答案,它工作正常,但他没有回答,而是添加了评论。所以,我正在更新答案。请把它归功于他。
谢谢&问候,
SSuman185