如何在xamarin中设置onclick监听器?

Art*_*nis 16 c# android xamarin.android xamarin

我对C#和Xamarin很陌生,并且一直试图实现底层元素并且不知道如何正确地执行它.我正在使用Cocosw.BottomSheet-Xamarin.Android库.

这是我的代码:

Cocosw.BottomSheetActions.BottomSheet.Builder b = new Cocosw.BottomSheetActions.BottomSheet.Builder (this);
b.Title ("New");
b.Sheet (Resource.Layout.menu_bottom_sheet)
Run Code Online (Sandbox Code Playgroud)

现在我认为我应该使用b.Listener(...),但它需要一个接口IDialogInterfaceOnClickListener作为参数,我不知道如何正确地在C#中做到这一点.

在Java中我可以写

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
    }
});
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

class BottomSheetActions : IDialogInterfaceOnClickListener {
    public void OnClick (IDialogInterface dialog, int which) {
        Console.WriteLine ("Hello fox");
    }

    public IntPtr Handle { get; }

    public void Dispose() {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后这个:

b.Listener (new BottomSheetActions());
Run Code Online (Sandbox Code Playgroud)

但它没有用.

Let*_*tor 22

请改用点击事件.

button.Click += delegate 
{
    //Your code
};
Run Code Online (Sandbox Code Playgroud)

请参阅我的其他答案以获取更多信息

  • 这与setOnClickListener函数的工作方式不同.使用代码中显示的事件会导致某些问题,例如重叠事件setOnClickListener是一个更稳定的选项. (3认同)

Wil*_*osa 13

最简单的方法是使用Click每个View上可用的事件.但是,为了实现IOnClickListener(或任何其他接口也是如此IJavaObject),您需要使实现它的类继承自Java.Lang.Object:

internal class BottomSheetActions : Java.Lang.Object, IDialogInterfaceOnClickListener 
{
    public void OnClick (IDialogInterface dialog, int which)
    {
        Console.WriteLine ("Hello fox");
    }
}
Run Code Online (Sandbox Code Playgroud)

这样您就不需要实现了IntPtr Handle,您的代码也可以正常工作