Ricerca…


Rimozione dei tipi

È possibile istruire Xamarin.Android Bindings Generator per ignorare un tipo Java e non vincolarlo. Questo viene fatto aggiungendo un elemento XML remove-node al file metadata.xml:

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

Implementazione di interfacce Java

Se una libreria java contiene interfacce che devono essere implementate dall'utente (ad es. View.IOnClickListener clic come View.IOnClickListener o callbacks), la classe di implementazione deve ereditare, direttamente o indirettamente, da Java.Lang.Object o Java.Lang.Throwable . Questo è un errore comune, perché i passaggi della confezione stampano semplicemente un avviso che viene trascurato facilmente:

Digitare "MyListener" implementa Android.Runtime.IJavaObject ma non eredita da Java.Lang.Object. Non è supportato

Sbagliato

L'utilizzo di questa implementazione risulterà in un comportamento imprevisto.

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

    public void Dispose()
    {            
    }

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

Corretta

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

Le librerie di bind possono rinominare i metodi e le interfacce

Non tutto in una libreria di binding avrà lo stesso nome in C # come in Java.

In C #, i nomi delle interfacce iniziano con "I", ma Java non ha tale convenzione. Quando SomeInterface una libreria Java, un'interfaccia denominata SomeInterface diventerà ISomeInterface .

Allo stesso modo, Java non ha proprietà come C #. Quando una libreria è vincolata, i metodi getter e setter Java potrebbero essere refactored come proprietà. Ad esempio, il seguente codice Java

public int getX() { return someInt; }

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

può essere refactorato come

public int X { get; set; }

quando è legato.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow