2016-06-11 15 views
5

Ho appena iniziato a imparare su Xamarin Android. Ho pochi pulsanti con lo stesso gestore di eventi click.Esiste la possibilità di assegnare un valore al pulsante Android in Xamarin?

private Button flipper1Btn; 
    private Button flipper2Btn; 
    private ViewFlipper flipper; 
    private TextView text; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Main); 

     setControls(); 
     setEvents(); 
    } 

    private void setControls() 
    { 
     flipper = FindViewById<ViewFlipper>(Resource.Id.viewFlipper1); 
     flipper1Btn = FindViewById<Button>(Resource.Id.button1); 
     flipper2Btn = FindViewById<Button>(Resource.Id.button2); 
     text = FindViewById<TextView>(Resource.Id.textView1); 

    } 
    private void setEvents() 
    { 
     flipper1Btn.Click += FlipperBtn_Click; 
     flipper2Btn.Click += FlipperBtn_Click; 
    } 

    #region Events 

    private void FlipperBtn_Click(object sender, EventArgs e) 
    { 
     Button sendBtn = (Button)sender;  
    } 

    #endregion 

Nel metodo "FlipperBtn_Click" Vorrei riconoscere quale pulsante è stato premuto e ottenere valore da questo pulsante. Mi piacerebbe ottenere qualcosa di simile in HTML5 assegnando a div il numero di attributi che voglio. Stavo pensando di Android "Tag" propertie, e cercando di fare qualcosa del genere:

private void setControls() 
    { 
     flipper = FindViewById<ViewFlipper>(Resource.Id.viewFlipper1); 
     flipper1Btn = FindViewById<Button>(Resource.Id.button1); 
     flipper2Btn = FindViewById<Button>(Resource.Id.button2); 
     text = FindViewById<TextView>(Resource.Id.textView1); 
     FlipperBtnTag tag1 = new FlipperBtnTag("tag1", "tag1Value"); 
     FlipperBtnTag tag2 = new FlipperBtnTag("tag2", "tag2Value"); 

     flipper1Btn.SetTag(1, tag1); 
     flipper1Btn.SetTag(2, tag2); 
    } 

Bud non capisco alcune pensa: a) Qual è uno scopo di utilizzare "chiave" in modo SetTag? b) Come posso convertire l'oggetto di classe C# in Java.Lang.Object?

risposta

6

Non è necessario impostare i tag nei pulsanti per trovare la strega su cui si fa clic.

Fate questo:

flipper1Btn = FindViewById<Button>(Resource.Id.button1); 
flipper2Btn = FindViewById<Button>(Resource.Id.button2); 

flipper1Btn += Button_Click; 
flipper2Btn += Button_Click; 

void Button_Click(object sender, System.EventArgs e) 
{ 
    var button = (Button)sender; 

    switch (button.Id) 
    { 
     case Resource.Id.button1: 
      // Do Stuff here 
     break; 

     case Resource.Id.button2: 
      // Do Stuff here 
     break; 

     default: 
     break; 
    } 
} 

In Xamarin Android ci sono due modi per impostare i tag. tramite property o tramite method.

button.SetTag(1, "value"); 

Oppure:

button.Tag = "value"; 
+1

Grazie mille! Funziona come voglio :) – Shagohad