Suche…


Typen entfernen

Es ist möglich, den Xamarin.Android Bindings Generator anzuweisen, einen Java-Typ zu ignorieren und nicht zu binden. Dazu fügen Sie der Datei metadata.xml ein XML-Element zum remove-node eines remove-node hinzu:

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

Java-Schnittstellen implementieren

Wenn eine Java-Bibliothek Schnittstellen enthält, die vom Benutzer implementiert werden sollen (z. B. View.IOnClickListener wie View.IOnClickListener oder Callbacks), muss die implementierende Klasse direkt oder indirekt von Java.Lang.Object oder Java.Lang.Throwable . Dies ist ein häufiger Fehler, da die Verpackungsschritte lediglich eine Warnung ausgeben, die leicht übersehen wird:

Typ 'MyListener' implementiert Android.Runtime.IJavaObject, erbt jedoch nicht von Java.Lang.Object. Es wird nicht unterstützt.

Falsch

Die Verwendung dieser Implementierung führt zu unerwartetem Verhalten.

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

    public void Dispose()
    {            
    }

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

Richtig

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

Bindungsbibliotheken können Methoden und Schnittstellen umbenennen

Nicht alles in einer Bindungsbibliothek hat in C # denselben Namen wie in Java.

In C # beginnen Schnittstellennamen mit "I", Java hat jedoch keine solche Konvention. Wenn Sie eine Java-Bibliothek importieren, wird eine Schnittstelle namens SomeInterface zu ISomeInterface .

Ebenso verfügt Java nicht über Eigenschaften wie C #. Wenn eine Bibliothek gebunden ist, können Java-Getter- und Setter-Methoden als Eigenschaften umgestaltet werden. Zum Beispiel der folgende Java-Code

public int getX() { return someInt; }

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

kann als umgestaltet werden

public int X { get; set; }

wenn es gebunden ist



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow