Recherche…


Suppression de types

Il est possible d'indiquer au générateur Xamarin.Android Bindings d'ignorer un type Java et de ne pas le lier. Cela se fait en ajoutant un élément XML remove-node au fichier metadata.xml:

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

Implémentation des interfaces Java

Si une bibliothèque Java contient des interfaces qui doivent être implémentées par l'utilisateur (par exemple, des écouteurs de clic comme View.IOnClickListener ou des rappels), la classe d'implémentation doit hériter - directement ou indirectement - de Java.Lang.Object ou Java.Lang.Throwable . C'est une erreur courante, car les étapes de l'emballage ne font qu'imprimer un avertissement qui est facilement ignoré:

Tapez 'MyListener' implémente Android.Runtime.IJavaObject mais n'hérite pas de Java.Lang.Object. Ce n'est pas supporté.

Faux

L'utilisation de cette implémentation entraînera un comportement inattendu.

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

    public void Dispose()
    {            
    }

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

Correct

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

Les bibliothèques de liaisons peuvent renommer les méthodes et les interfaces

Tout dans une bibliothèque de liaisons n'aura pas le même nom en C # qu'en Java.

En C #, les noms d’interface commencent par "I", mais Java n’a pas de convention de ce type. Lorsque vous importez une bibliothèque Java, une interface nommée SomeInterface devient ISomeInterface .

De même, Java n'a pas de propriétés comme C # le fait. Lorsqu'une bibliothèque est liée, les méthodes Java getter et setter peuvent être modifiées en tant que propriétés. Par exemple, le code Java suivant

public int getX() { return someInt; }

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

peut être restructuré comme

public int X { get; set; }

quand c'est lié



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow