JAVA は JS を呼び出します
//Java端
//带参数的函数调用
final String exes = "cc.Global.setEcADVal('"+ var1 + "')";
//必须在GL线程中进行
Cocos2dxHelper.runOnGLThread(new Runnable() {
@Override
public void run() {
//注意这里构造了带参数的函数
Cocos2dxJavascriptJavaBridge.evalString(exes);
}
});
//js端
setEcADVal(jsonVal) {
}
JS が Java を呼び出す
//js端
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/Test", "hello","(Z)V", true)});
//java端
public static void Test(boolean isVisibility) {
}
android.os.DeadObjectException の考えられる原因:
- インスタンス化されていない変数が Java コードに含まれている可能性があるため、最初に Java コードを確認してください。
- パーミッションの問題である可能性もあります。AndroidMainfest.xml に次のパーミッションを追加してみてください。
<uses-permission android:name="android.permission.INTERNET"/>
- java が js を呼び出すと、エンジンが初期化されない場合があります。このエラーを解決する方法は、エンジンがjs コードで初期化されていることを確認することです(数秒の遅延など):最初に js を使用して java を呼び出し、次に java を使用して js を呼び出します。これにより、エラーが回避されます。
Java と JS 間の相互呼び出しの詳細を添付:リンク