2016-02-04 4 views
10

Sono abbastanza nuovo di C# e Xamarin e ho cercato di implementare un elemento di foglio inferiore e non so come farlo correttamente. Sto usando la libreria Cocosw.BottomSheet-Xamarin.Android.Come impostare onclick listener in xamarin?

Ecco il mio codice:

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

Ora Penso che dovrei usare b.Listener(...), ma richiede un'interfaccia IDialogInterfaceOnClickListener come paramater e non so come farlo in C# in modo corretto.

In Java ho potuto scrivere

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

Ho provato a fare questo:

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

    public IntPtr Handle { get; } 

    public void Dispose() { 

    } 
} 

e poi questo:

b.Listener (new BottomSheetActions()); 

Ma non ha funzionato.

risposta

6

Il modo più semplice è infatti utilizzando l'evento Click che è disponibile su ogni View. Tuttavia, al fine di attuare IOnClickListener (o qualsiasi altra interfaccia che è anche un IJavaObject) è necessario effettuare la classe attuazione ereditare da Java.Lang.Object:

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

In questo modo non è necessario implementare IntPtr Handle e il tuo codice funziona bene

+0

Sto lavorando con una libreria di terze parti, che richiede 'IDialogInterfaceOnClickListener', quindi non posso usare l'evento' Click', ma potrei provare ad ereditare da 'Java.Lang.Object', grazie. –

12

Utilizzare invece evento clic.

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

Vedi la mia altra answer per ulteriori informazioni

+2

questo non funziona come la funzione setOnClickListener. L'utilizzo dell'evento come mostrato nel codice causa alcuni problemi come eventi sovrapposti Il setOnClickListener è un'opzione più stabile. –

Problemi correlati