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

时间:2016-02-04 16:45:16

标签: c# android xamarin xamarin.android

我对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)

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

在Java中我可以写

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

我试过这样做:

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

    public IntPtr Handle { get; }

    public void Dispose() {

    }
}

然后这个:

b.Listener (new BottomSheetActions());

但它没有用。

2 个答案:

答案 0 :(得分:22)

改为使用点击事件。

button.Click += delegate 
{
    //Your code
};

有关详细信息,请参阅我的其他answer

答案 1 :(得分:12)

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

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

这样您就不需要实现IntPtr Handle,您的代码就可以正常运行