如何在 xamarin 中设置 onclick 监听器?
How to set onclick listener in xamarin?
我对 C# 和 Xamarin 还很陌生,一直在尝试实现底部 sheet 元素,但不知道如何正确执行。我正在使用 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());
但是没用。
改用点击事件。
button.Click += delegate
{
//Your code
};
查看我的其他 了解更多信息
最简单的方法确实是使用每个视图都可用的 Click
事件。但是,为了实现 IOnClickListener
(或任何其他也是 IJavaObject
的接口),您需要使实现它的 class 继承自 Java.Lang.Object
:
internal class BottomSheetActions : Java.Lang.Object, IDialogInterfaceOnClickListener
{
public void OnClick (IDialogInterface dialog, int which)
{
Console.WriteLine ("Hello fox");
}
}
这样您就不需要实现 IntPtr Handle
并且您的代码将正常工作
我对 C# 和 Xamarin 还很陌生,一直在尝试实现底部 sheet 元素,但不知道如何正确执行。我正在使用 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());
但是没用。
改用点击事件。
button.Click += delegate
{
//Your code
};
查看我的其他
最简单的方法确实是使用每个视图都可用的 Click
事件。但是,为了实现 IOnClickListener
(或任何其他也是 IJavaObject
的接口),您需要使实现它的 class 继承自 Java.Lang.Object
:
internal class BottomSheetActions : Java.Lang.Object, IDialogInterfaceOnClickListener
{
public void OnClick (IDialogInterface dialog, int which)
{
Console.WriteLine ("Hello fox");
}
}
这样您就不需要实现 IntPtr Handle
并且您的代码将正常工作