Zoeken…


Typen verwijderen

Het is mogelijk om de Xamarin.Android Bindings Generator te instrueren een Java-type te negeren en niet te binden. Dit wordt gedaan door een XML-element met remove-node toe te voegen aan het metadata.xml-bestand:

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

Java-interfaces implementeren

Als een Java-bibliotheek interfaces bevat die door de gebruiker moeten worden geïmplementeerd (bijvoorbeeld View.IOnClickListener zoals View.IOnClickListener of callbacks), moet de implementatieklasse - direct of indirect - erven van Java.Lang.Object of Java.Lang.Throwable . Dit is een veel voorkomende fout, omdat de verpakkingsstappen gewoon een waarschuwing afdrukken die gemakkelijk over het hoofd wordt gezien:

Type 'MyListener' implementeert Android.Runtime.IJavaObject maar erft niet van Java.Lang.Object. Het wordt niet ondersteund.

Mis

Het gebruik van deze implementatie leidt tot onverwacht gedrag.

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)
    {
        // ...
    }
}

Bindingsbibliotheken kunnen methoden en interfaces hernoemen

Niet alles in een bindingsbibliotheek heeft dezelfde naam in C # als in Java.

In C # beginnen interfacenamen met "I", maar Java heeft een dergelijke conventie niet. Wanneer u een Java-bibliotheek importeert, wordt een interface met de naam SomeInterface ISomeInterface .

Op dezelfde manier heeft Java geen eigenschappen zoals C #. Wanneer een bibliotheek is gebonden, kunnen Java getter- en setter-methoden als eigenschappen opnieuw worden geactiveerd. Bijvoorbeeld de volgende Java-code

public int getX() { return someInt; }

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

kan opnieuw worden ingevoerd als

public int X { get; set; }

wanneer het gebonden is.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow