Sök…


Ta bort typer

Det är möjligt att instruera Xamarin.Android Bindings Generator att ignorera en Java-typ och inte binda den. Detta görs genom att lägga till ett remove-node XML-element till metadata.xml-filen:

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

Implementering av Java-gränssnitt

Om ett java-bibliotek innehåller gränssnitt som ska implementeras av användaren (t.ex. klicka lyssnare som View.IOnClickListener eller callbacks) måste implementeringsklassen ärva - direkt eller indirekt - från Java.Lang.Object eller Java.Lang.Throwable . Detta är ett vanligt fel eftersom förpackningsstegen bara skriver ut en varning som lätt förbises:

Skriv "MyListener" implementerar Android.Runtime.IJavaObject men ärver inte från Java.Lang.Object. Det stöds inte.

Fel

Användningen av denna implementering kommer att leda till oväntat beteende.

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

    public void Dispose()
    {            
    }

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

Korrekt

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

Bindningsbibliotek kan byta namn på metoder och gränssnitt

Inte allt i ett bindningsbibliotek kommer att ha samma namn i C # som det gör i Java.

I C # startar gränssnittsnamn med "jag", men Java har ingen sådan konvention. När du importerar ett Java-bibliotek blir ett gränssnitt som heter SomeInterface ISomeInterface .

På liknande sätt har Java inte egenskaper som C # gör. När ett bibliotek är bundet kan Java-getter- och setter-metoder refaktoreras som egenskaper. Till exempel följande Java-kod

public int getX() { return someInt; }

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

kan refaktoreras som

public int X { get; set; }

när det är bundet.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow