2016-02-04 11 views
10

Jestem całkiem nowy dla C# i Xamarin i próbowałem zaimplementować element dolny arkusz i nie wiem jak to zrobić poprawnie. Używam biblioteki Cocosw.BottomSheet-Xamarin.Android.Jak ustawić detektor onclick w Xamarinie?

Oto mój kod:

Cocosw.BottomSheetActions.BottomSheet.Builder b = new Cocosw.BottomSheetActions.BottomSheet.Builder (this); 
b.Title ("New"); 
b.Sheet (Resource.Layout.menu_bottom_sheet) 

Teraz myślę, że należy użyć b.Listener(...), ale to wymaga interfejsu IDialogInterfaceOnClickListener jako paramater i nie wiem jak to zrobić w C# poprawnie.

W Javie można napisać

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

Próbowałem w ten sposób:

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

    public IntPtr Handle { get; } 

    public void Dispose() { 

    } 
} 

a następnie to:

b.Listener (new BottomSheetActions()); 

Ale nie zrobił praca.

Odpowiedz

6

Najprostszym sposobem jest rzeczywiście za pomocą zdarzenia Click, który jest dostępny w każdym widoku. Jednak w celu realizacji IOnClickListener (lub dowolny inny interfejs, który jest również IJavaObject) trzeba dokonać klasa wykonania to dziedziczą Java.Lang.Object:

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

W ten sposób nie trzeba wdrożyć IntPtr Handle i kod będzie działa dobrze

+0

Pracuję z biblioteką innej firmy, która wymaga 'IDialogInterfaceOnClickListener', więc nie mogę używać zdarzenia' Click', ale mogę spróbować dziedziczyć z 'Java.Lang.Object', dziękuję. –

12

Zamiast tego użyj zdarzenia kliknięcia.

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

Zobacz inne moje answer uzyskać więcej informacji

+2

to nie działa tak samo, jak funkcja setOnClickListener. Używanie zdarzenia pokazanego w kodzie powoduje pewne problemy, takie jak nakładające się zdarzenia. Zestaw setOnClickListener jest bardziej stabilny. –

Powiązane problemy