【发布时间】:2015-02-17 11:00:36
【问题描述】:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity");
activity.CallStatic("testMethod");
这就是我不带参数调用 Android 静态函数的方式,它的工作原理很完美。但是当我尝试使用参数调用非静态函数时遇到问题。
我试着这样称呼它:
activity.Call("testMethod", "testString");
但是Android会抛出异常:
AndroidJavaException: java.lang.NoSuchMethodError: no non-static method "L**myActivity**(Ljava/lang/String;)V"
我做错了什么?静态调用和非静态调用有什么区别?我正在使用相同的活动。这是我的java方法:
public void testMethod(String data) { }
更新
终于可以运行非静态方法了:
activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
activity.Call("testMethod", "testString");
}));
如果没有 runOnUIThread,那奇怪的事情就无法工作......可能我做错了什么。
【问题讨论】:
-
我可以看看你的原生安卓代码吗?我有同样的问题,我不确定你为什么叫 currentActivity
-
在我们和更友好的 API 之间存在哪些技术障碍?