Xamarin.Android Implementazione di interfacce Java


Esempio

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