Как установить onclick прослушиватель в xamarin?
Я новичок в С# и 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
в качестве параметра, и я не знаю, как это сделать на С# правильно.
В 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());
Но это не сработало.
Ответы
Ответ 1
Самый простой способ - действительно использовать событие 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
, и ваш код будет работать просто отлично
Ответ 2
Вместо этого используйте событие click.
button.Click += delegate
{
//Your code
};
См. мой другой ответ для получения дополнительной информации