java.lang.NoSuchMethodError: no non-static method with name='onCreate' signature='()V' in class Ljava.lang.Object;
У меня есть Unity приложение, которое использует java плагин. Вот мой java класс:
public class MyLibrary extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
}
}
этот код должен открывать приложение камеры на моем смартфоне Android. Итак, в моем приложении Unity есть кнопка, которая вызывает java-метод ... Когда я нажимаю кнопку, у меня есть это в logcat:
2021-05-01 22:20:15.010 15532-15576/? E/Unity: AndroidJavaException: java.lang.NoSuchMethodError: no
non-static method with name='onCreate' signature='()V' in class Ljava.lang.Object;
java.lang.NoSuchMethodError: no non-static method with name='onCreate' signature='()V' in class
Ljava.lang.Object;
at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source:162)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.access$300(Unknown Source:0)
at com.unity3d.player.UnityPlayer$e$1.handleMessage(Unknown Source:95)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:241)
at com.unity3d.player.UnityPlayer$e.run(Unknown Source:20)
at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.AndroidJNISafe.CallStaticObjectMethod (System.IntPtr clazz, System.IntPtr methodID,
UnityEngine.jvalue[] args) [0x00000] in <00000000000000000000000000000000>:0
вот мой C# код:
public class StartPluginToLoadCameraByButton : MonoBehaviour
{
public Button button;
public GameObject ButtonOjbect;
private void Start()
{
button = GetComponent<Button>();
button.onClick.AddListener(StartPlugin);
}
public void StartPlugin()
{
var plugin = new AndroidJavaClass("com.example.workinglibrary.MyLibrary");
plugin.Call("onCreate");
}
}
после того как я не нашел решения моей проблемы в интернете, я задал этот вопрос на stackoverflow англ. версии, и там мне посоветовали сделать следующее: 1) заменить protected void onCreate(Bundle savedInstanceState) на public void onCreate(Bundle savedInstanceState) 2) также в то время когда я вызываю мой java метод из C# скрипта, я вызываю просто по названию метода, но в моем java скрипте он принимает один аргумент... в официальной документации юнити написано: public void Call(string methodName, params object[] args); - ну первое это имя функции, а второе - это аргумент... Здесь у меня тоже возникла проблема, так как я не понимаю как правильно записать onCreate(Bundle savedInstanceState) в C#... видел как вызывают просто методы, без аргументов, но здесь не так... пожалуйста, мне бы пример увидеть, как этот аргумент записывать вместе с вызовом метода, и поможет ли это вообще решить эту ошибку что у меня в logcat? заранее спасибо!