Xamarin.Android Implémentation des interfaces Java


Exemple

Si une bibliothèque Java contient des interfaces qui doivent être implémentées par l'utilisateur (par exemple, des écouteurs de clic comme View.IOnClickListener ou des rappels), la classe d'implémentation doit hériter - directement ou indirectement - de Java.Lang.Object ou Java.Lang.Throwable . C'est une erreur courante, car les étapes de l'emballage ne font qu'imprimer un avertissement qui est facilement ignoré:

Tapez 'MyListener' implémente Android.Runtime.IJavaObject mais n'hérite pas de Java.Lang.Object. Ce n'est pas supporté.

Faux

L'utilisation de cette implémentation entraînera un comportement inattendu.

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