我正在开发 Unity for Android 应用程序,它使用本机 Android 插件。我在里面使用AndroidJavaObject
's Call
method.
正如它所说文档,方法的签名是:
public void Call(string methodName, params object[] args);
我想将字符串数组发送到我的项目中:
string[] strings = new string[] { "string1", "string2", ...};
myAndroidJavaObject.Call("myMethod", strings);
并将其接收到Java代码中:
public void myMethod(String[] strings){
// some code where I use strings
}
但我收到错误:
AndroidJavaException: java.lang.NoSuchMethodError: no non-static method with name='myMethod' signature='(Ljava/lang/String;Ljava/lang/String;)V' in class Ljava.lang.Object;
任何人都可以描述程序在这种情况下的行为吗?
数组在发送到某个地方时需要特殊处理AndroidJavaObject
。取自本文,您可以实现一个函数来处理它,如下所示:
private AndroidJavaObject javaArrayFromCS(string [] values) {
AndroidJavaClass arrayClass = new AndroidJavaClass("java.lang.reflect.Array");
AndroidJavaObject arrayObject = arrayClass.CallStatic<AndroidJavaObject>("newInstance", new AndroidJavaClass("java.lang.String"), values.Count());
for (int i=0; i<values.Count(); ++i) {
arrayClass.CallStatic("set", arrayObject, i, new AndroidJavaObject("java.lang.String", values[i])));
}
return arrayObject;
}
然后你可以像这样调用你的函数:
myAndroidJavaObject.Call("myMethod", javaArrayFromCS(strings));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)