JS调安卓jsb.reflection.callStaticMethod

案例一:
js层
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “requestLogin”, “(Ljava/lang/String;)Ljava/lang/String;”, “this string from js”);
this.label.string = result;
java层
public static String requestLogin(final String strPlatform) {
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,"requestLogin platform = " + strPlatform);
}
});
return strPlatform;
}
jsb.reflection.callStaticMethod参数剖析:
参数一:“org/cocos2dx/javascript/AppActivity”:java中的包名(.换成/)+class文件名,就当是路径好了
参数二:“requestLogin”:方法名(必须public static)
参数三:“(Ljava/lang/String;)Ljava/lang/String;”:()内的是调用的java方法的参数类型,()外面的是返回值类型
【类型对应表:java类型int —I java类型float----F java类型boolean(布尔)-----Z java类型String-----Ljava/lang/String;】
参数N: “this string from js”:是java方法需要传入的参数(可以多个,与参数三中()内的数量和类型一一对应)

案例二:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_1”, “()I”);
this.label.string = result;
java:
public static int callback_1(){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_1”);
}
});
return 1;
}

案例三:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_2”, “(I)I”, 9);
this.label.string = result;
java:
public static int callback_2(final int intData){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_2”);
}
});
return intData;
}

案例四:
js:
var result = jsb.reflection.callStaticMethod(“org/cocos2dx/javascript/AppActivity”, “callback_3”, “(II)I”, 9,9);
this.label.string = result;
java:
public static int callback_3(final int i, final int j){
AppActivity.instance.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.e(“JSB”,“callback_3”);
}
});
return i+j;
}

您好,看了您写的想提问下,我的js层调用java层报错,您又遇到过么
01-02 14:57:25.212: E/JavaScriptJavaBridge(4051): [ERROR] (/Users/hufeng/cocospro/CocosCreatormajiang/jtsdmajiang
code/jtsdmajiangcode/client/build/jsb-default/frameworks
/cocos2d-x/cocos/scripting/js-bindings/proj.android/…/m
anual/JavaScriptJavaBridge.cpp, 561): call valid: 0, call.getArgumentsCount()= 0

01-02 14:57:25.212: E/JavaScriptJavaBridge(4051): [ERROR] Failed to invoke JavaScriptJavaBridge_callStaticMethod, location: /Users/hufeng/cocospro/CocosCreatormajiang/jtsdmajiangc
ode/jtsdmajiangcode/client/build/jsb-default/frameworks/
cocos2d-x/cocos/scripting/js-bindings/proj.android/…/ma
nual/JavaScriptJavaBridge.cpp:567

如果是一个参数需要添加分号,例如 (Ljava/lang/String;)V