Uno OnClickHandler per pulsanti multipli

Mi ritrovo a fare cose come questo tutto il tempo:

Button button1 = (Button) findViewById(R.id.button1); Button button2 = (Button) findViewById(R.id.button2); Button button3 = (Button) findViewById(R.id.button3); button1.setOnClickListener(menuButtonListener); button2.setOnClickListener(menuButtonListener); button3.setOnClickListener(menuButtonListener); ... 

e

  • Android Come si ottiene la memory RAM complessiva nel dispositivo?
  • Android / Eclipse / Fine prematuro del file xml
  • Imansible abbassare il text del button di casi nello studio android
  • Imansible trovare com.google.android.gms: play-services: 3.1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1. 11 6.1.71 6.5.87
  • Android: Static null variabile a bassa memory
  • Android Google Maps ottiene le coordinate di border
  •   private OnClickListener myButtonListener = new OnClickListener() { @Override public void onClick(View v) { switch(v.getId()){ case R.id.button1 : ... 

    C'è un modo migliore per impostare l'OnClickListener?

  • Utilizza l'API di Direzione GoogleMap o MapBox per implementare la mia navigazione nella mia app
  • Come aggiungere 3 immagini in una canvas in android
  • Come aggiungere più voci di intestazione in un ListView
  • come get l'utente online o offline in asmack, android
  • Android WebView non carica contenuto misto
  • Android: Come ottengo la potenza del segnale GSM per tutti gli operatori di networking disponibili
  • 5 Solutions collect form web for “Uno OnClickHandler per pulsanti multipli”

    Puoi anche impostarla nel tuo layout xml utilizzando l'android: onclick attributo.

     android:onClick="onClick" 

    Quindi nella class di attività aggiungere il metodo onClick.

     public void onClick(View v) { ... 

    Ecco la documentazione .

    Fai la tua class implementare `View.OnClickListener ', come

     public class MyActivity extends Activity implements View.OnClickListener { Button button1, button2, button3; @Override public void onCreate(Bundle bundle) { super.onCreate(); ... button1 = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()) { case R.id.button1: // do stuff; break; case R.id.button2: // do stuff; break; ... } } 

    Gettin @foenix risponde, puoi semplicemente fare qualcosa di simile:

      int[] buttons = {R.id.button1, R.id.button2, R.id.button3, R.id.button4, R.id.button5, R.id.button6, R.id.button7 , R.id.button8, R.id.button9}; for (int i = 0; i < buttons.length; i++) { Button buttonNum = (Button) rootView.findViewById(buttons[i]); buttonNum.setOnClickListener(doSomething); } private OnClickListener doSomething= new OnClickListener() { @Override public void onClick(View v) { //doSomething } }; 

    Si dovrebbe notare che

     android:onclick="onClick" 

    richiede alless Andoid SDK 1.6. Quindi, se vuoi che l'applicazione sia accessibile al più grande pubblico ansible, probabilmente vuoi scrivere l'applicazione contro Android 1.6. A less che la tua applicazione non richiede una funzionalità disponibile solo in 1.6+. Così mentre il primo tentativo è un po 'più di lavoro, ha una maggiore compatibilità all'indietro. Di solito faccio il tuo modo di fare, per mantenere le mie applicazioni 1.5 comptable.

    Modifica: è facile trascurare questo problema se impostate Android 2.2 come SDK nelle impostazioni dei progetti, ma impostate la versione minSDK a 3 (1.5) poiché non fornisce gli errori del compilatore.

    Penso che nel caso in cui i pulsanti non siano in Attività, ma in FragmentDialog ecc., Questo può aiutare

     Context mContext = getActivity().getBaseContext(); mRes = mContext.getResources(); String[] idOfButtons = { "button1", "button2", "button3"}; for (int pos = 0; pos < idOfButtons.length; pos++) { Integer btnId = mRes.getIdentifier(idOfButtons[pos], "id",(getActivity()).getBaseContext().getPackageName()); ImageButton ib = (ImageButton) v.findViewById(btnId); ib.setOnClickListener(this.onClickNum); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.