web-dev-qa-db-ja.com

xamarinでonclickリスナーを設定する方法は?

私は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#でそれを正しく行う方法がわからない。

In 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());
_

しかし、うまくいきませんでした。

16
Artūrs Eimanis

最も簡単な方法は、実際にすべてのビューで使用可能な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を実装する必要がなく、コードは問題なく動作します

12
William Barbosa

代わりにクリックイベントを使用してください。

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

他の answer を参照してください

22
Let'sRefactor