Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从android中的本机函数调用void java成员函数_Android_Callback_Android Ndk - Fatal编程技术网

无法从android中的本机函数调用void 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

我在android ndk中面临问题。当我尝试从cpp调用java nan静态成员函数时,我也没有得到任何运行时错误,但函数没有被调用。 但是当我尝试从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

在调用成员函数时,不要将类实例用作类参数。将类的实例用作cls参数。然后我们也可以调用成员函数

答案由塞尔文给出,效果很好,但他没有回答,而是添加了评论。因此,我正在更新答案。请把这归功于他

谢谢和问候,
SSuman185

您缺少类的实例,我认为interfaceClass是类实例,而不是类的实例更准确地说。。。interfaceClass是描述某种类型/类的对象。。。您需要创建此类型/类的对象,并将其传递给CallVoidMethodHi Selven,您的假设是正确的,interfaceClass在类实例中,而不是classobject的实例,请告诉我如何获取该对象的引用。谢谢Selvin,它现在正在工作。