Поиск…


Удаление типов

Можно дать указание генератору привязок Xamarin.Android игнорировать тип Java и не связывать его. Это делается путем добавления XML-элемента remove-node в файл metadata.xml:

<remove-node path="/api/package[@name='{package_name}']/class[@name='{name}']" />

Внедрение интерфейсов Java

Если в java-библиотеке содержатся интерфейсы, которые должны быть реализованы пользователем (например, нажмите на прослушиватели, такие как View.IOnClickListener или обратные вызовы), класс реализации должен наследовать - прямо или косвенно - из Java.Lang.Object или Java.Lang.Throwable , Это обычная ошибка, так как этапы упаковки просто печатают предупреждение, которое легко пропускается:

Тип «MyListener» реализует Android.Runtime.IJavaObject, но не наследует Java.Lang.Object. Он не поддерживается.

Неправильно

Использование этой реализации приведет к неожиданному поведению.

class MyListener : View.IOnClickListener
{
    public IntPtr Handle { get; }

    public void Dispose()
    {            
    }

    
    public void OnClick(View v)
    {
        // ...
    }
}

Правильный

class MyListener : 
    Java.Lang.Object, // this is the important part
    View.IOnClickListener
{       
    public void OnClick(View v)
    {
        // ...
    }
}

Библиотеки привязок могут переименовывать методы и интерфейсы

Не все в библиотеке привязок будет иметь такое же имя в C #, как и в Java.

В C # имена интерфейсов начинаются с «I», но Java не имеет такого соглашения. Когда вы импортируете библиотеку Java, интерфейс с именем SomeInterface станет ISomeInterface .

Аналогично, у Java нет таких свойств, как C #. Когда библиотека привязана, методы getter и setter могут быть реорганизованы как свойства. Например, следующий код Java

public int getX() { return someInt; }

public int setX(int someInt) { this.someInt = someInt; }

могут быть реорганизованы как

public int X { get; set; }

когда он связан.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow