Je suis assez nouveau sur C # et Xamarin et j'ai essayé d'implémenter un élément de feuille de fond et je ne sais pas comment le faire correctement. J'utilise Cocosw.BottomSheet-Xamarin.Android bibliothèque.
Voici mon code:
Cocosw.BottomSheetActions.BottomSheet.Builder b = new Cocosw.BottomSheetActions.BottomSheet.Builder (this);
b.Title ("New");
b.Sheet (Resource.Layout.menu_bottom_sheet)
Maintenant, je pense que je devrais utiliser b.Listener(...)
, mais cela nécessite une interface IDialogInterfaceOnClickListener
comme paramètre et je ne sais pas comment le faire correctement en C #.
En Java je pourrais écrire
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
J'ai essayé de faire ça:
class BottomSheetActions : IDialogInterfaceOnClickListener {
public void OnClick (IDialogInterface dialog, int which) {
Console.WriteLine ("Hello fox");
}
public IntPtr Handle { get; }
public void Dispose() {
}
}
et puis ceci:
b.Listener (new BottomSheetActions());
Mais cela n'a pas fonctionné.
La manière la plus simple est en effet d'utiliser l'événement Click
qui est disponible sur chaque vue. Cependant, afin d'implémenter IOnClickListener
(ou toute autre interface qui est également un IJavaObject
), vous devez faire en sorte que la classe l'implémentant hérite de Java.Lang.Object
:
internal class BottomSheetActions : Java.Lang.Object, IDialogInterfaceOnClickListener
{
public void OnClick (IDialogInterface dialog, int which)
{
Console.WriteLine ("Hello fox");
}
}
De cette façon, vous n'avez pas besoin d'implémenter IntPtr Handle
et votre code fonctionnera très bien
Utilisez plutôt l'événement de clic.
button.Click += delegate
{
//Your code
};
Voir mon autre réponse pour plus d'informations