调用数组传递错误(Unity for Android)
我正在开发UnityforAndroid应用程序,它使用原生Android插件。在它里面,我使用了调用数组传递错误(Unity for Android),android,unity3d,Android,Unity3d,我正在开发UnityforAndroid应用程序,它使用原生Android插件。在它里面,我使用了AndroidJavaObject的调用方法 如中所述,方法的签名为: 公共void调用(string methodName,params object[]args) 我想将字符串数组发送到我的项目中: string[] strings = new string[] { "string1", "string2", ...}; myAndroidJavaObject.Call("myMethod",
AndroidJavaObject
的调用
方法
如中所述,方法的签名为:
公共void调用(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:Ljava.lang.Object类中没有名为='myMethod'签名='(Ljava/lang/String;Ljava/lang/String;)V'的非静态方法代码>
有人能描述程序在这种情况下的行为吗?当数组被发送到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;
}
您只需将字符串数组强制转换为一个对象,如下代码所示
string[] strings = new string[] { "string1", "string2", ...};
myAndroidJavaObject.Call("myMethod", **(object)** strings);
string[] strings = new string[] { "string1", "string2", ...};
myAndroidJavaObject.Call("myMethod", **(object)** strings);