Вызов метода с несколькими аргументами в AAR из скрипта Unity3D C# - PullRequest
1 голос
/ 11 февраля 2020

У меня есть класс со следующим методом:

public static int add( int a, int b ){
    return a + b;
}

, и я пытаюсь вызвать его из скрипта Unity с помощью

var ajc = new AndroidJavaClass( "com.mil.rfcommunitylib.BluetoothClassic" );
int result = ajc.CallStatic<int,int>( "add", new int[] { 1, 2 } );

, но я получаю

AndroidJavaException: java .lang.NoSuchMethodError в моем logcat.

Что не так? Работает с методами без аргументов, поэтому мы можем предположить, что я все настроил правильно.

1 Ответ

2 голосов
/ 11 февраля 2020

Вместо вызова:

var ajc = new AndroidJavaClass( "com.mil.rfcommunitylib.BluetoothClassic" );
int result = ajc.CallStatic<int,int>( "add", new int[] { 1, 2 } );

вы должны использовать:

var ajc = new AndroidJavaClass( "com.mil.rfcommunitylib.BluetoothClassic" );
int result = ajc.CallStatic<int>( "add", 1, 2 );

Если вы внимательно посмотрите в документации: ссылка вы увидите, что в вашем Ситуация, когда ваша функция возвращает int, поэтому она должна быть javaClass.CallStatic<int>(functionName, params ...), и вы передаете аргументы, которые функция принимает, как отдельные параметры после имени функции, а не как массив с такими же типами параметров.

...