Buscar..


Quitando tipos

Es posible dar instrucciones al generador de enlaces de Xamarin.Android para que ignore un tipo de Java y no lo enlace. Esto se hace agregando un elemento XML de remove-node al archivo metadata.xml:

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

Implementando interfaces Java

Si una biblioteca java contiene interfaces que deben ser implementadas por el usuario (por ejemplo, escuchas de clic como View.IOnClickListener o callbacks), la clase implementadora debe heredar, directa o indirectamente, de Java.Lang.Object o Java.Lang.Throwable . Este es un error común, porque los pasos del paquete simplemente imprimen una advertencia que se pasa por alto fácilmente:

El tipo 'MyListener' implementa Android.Runtime.IJavaObject pero no hereda de Java.Lang.Object. No es compatible.

Incorrecto

El uso de esta implementación resultará en un comportamiento inesperado.

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

    public void Dispose()
    {            
    }

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

Correcto

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

Las bibliotecas de enlaces pueden renombrar métodos e interfaces.

No todo en una biblioteca de enlaces tendrá el mismo nombre en C # que en Java.

En C #, los nombres de las interfaces comienzan con "I", pero Java no tiene tal convención. Cuando importa una biblioteca Java, una interfaz llamada SomeInterface se convertirá en ISomeInterface .

Del mismo modo, Java no tiene propiedades como C # tiene. Cuando una biblioteca está vinculada, los métodos de obtención y establecimiento de Java se pueden refactorizar como propiedades. Por ejemplo, el siguiente código de Java

public int getX() { return someInt; }

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

puede ser refactora como

public int X { get; set; }

cuando esta atado



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow