Android one OnClick método para varios botones?

Comencé el programa poco en androide, tengo 3 botones en una sola actividad.

Vi algunos códigos de ejemplo que asignan el mismo evento OnClick a todos los botones (incluso si realizan una acción completamente diferente) y en el caso de caso Switch(id) caso …

¿Cuál es el mejor enfoque? Un método onClick y cambiar o un montón de métodos, uno para cada botón?

Gracias.

6 Solutions collect form web for “Android one OnClick método para varios botones?”

Si desea reducir las líneas de codificación, utilice View's OnClick() with switch statement y si desea manejar por separado todos los clics (para entender y mantener el código fácilmente), utilice el button's onClick(). todos los button's onClick().

Actualizar:

Si ha declarado Botones en su archivo de configuración de la actividad xml, escriba el atributo android:onClick="" con el mismo nombre de método para todos los botones e implemente ese método en su actividad. Ahora usted tiene un método para todos los botones y en ese método diferenciar los botones con id.

Ejemplo:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 3" /> </LinearLayout> 

Ahora, en el buttonOnClick implementar Actividad, buttonOnClick ,

 public void buttonOnClick(View view) { switch(view.getId()) { case R.id.button1: // Code for button 1 click break; case R.id.button2: // Code for button 2 click break; case R.id.button3: // Code for button 3 click break; } } 

O puede aplicar el mismo caso de cambio para los botones añadidos dinámicamente en su actividad, como en lugar de buttonOnClick usted tiene que utilizar el onClick OnClickListerner de View de la aplicación .

Utilizar de esta manera:

 @Override public void onCreate(Bundle savedInstanceState) { button1.setOnClickListener(onClickListener); button2.setOnClickListener(onClickListener); button3.setOnClickListener(onClickListener); } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch(v.getId()){ case R.id.button1: //DO something break; case R.id.button2: //DO something break; case R.id.button3: //DO something break; } } }; 
 this.btnAddFriedtoFacebook = (Button) this.findViewById(R.id.btnAddFriedtoFacebook); this.btnAddFriedtoFacebook.setOnClickListener(this.backButtonClickListener); public OnClickListener backButtonClickListener = new OnClickListener() { public void onClick(final View view) { if (view == MatchInfoActivity.this.btnBack) { MatchInfoActivity.this.finish(); } if( view == MatchInfoActivity.this.btnAddFried){ Intent i = new Intent(Intent.ACTION_VIEW); MatchInfoActivity.this.startActivity(i); } if( view == MatchInfoActivity.this.btnAddBuddy){ Intent i = new Intent(Intent.ACTION_VIEW); MatchInfoActivity.this.startActivity(i); } } }; 

Aquí está la buena manera.

Creo que registrar onClick en xml (diseño) es mejor enfoque.

EDITAR:

Hilos relacionados encontrados:

  1. Práctica recomendada para definir eventos de botón en android
  2. Mejores prácticas para manejar eventos de la interfaz de usuario

Registrado evento onClick en el diseño XML y luego manejarlo en el código. Así es como lo haría:

 <Button android:id="@+id/btplus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click me" android:onClick="onBtnClicked"> 

Método en clase

 public void onBtnClicked(View v) { switch (v.getId()) { case R.id.btplus: Toast.makeText(getApplicationContext(), "Plus is clicked" + "+", Toast.LENGTH_SHORT).show(); break; case R.id.btminu: Toast.makeText(getApplicationContext(),"Minus is clicked" + "-", Toast.LENGTH_SHORT).show(); break; default: break; } } 

Pequeña adición a @ Nguyen respuesta.

 findViewById(R.id.buttonOne).setOnClickListener(buttonClickListener); .... .... .... .... findViewById(R.id.buttonN).setOnClickListener(buttonClickListener); private View.OnClickListener buttonClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.buttonOne: // do something break; .... .... .... .... case R.id.buttonN: // do something break; } } }; 

Esto podría ser útil, si no desea inicializar la variable de botón, sino que desea realizar un seguimiento del evento de clic de botón. ¡Gracias!

  • Evitar que DialogFragment se rechace cuando se hace clic en el botón
  • ¿Agregar un onclick a un submenú?
  • Cómo eliminar el fondo de ImagePack en Android, pero sigo haciendo clic en Resaltar
  • OnClickListener en pestañas no funciona
  • Implementar onClick sólo para un compuesto TextView dibujable
  • ((Botón)) dentro de un servicio no funciona
  • Vistas superpuestas de Android y OnClick
  • Protección contra el spam onclick ()
  • Android Múltiples secuencias de clics en textview
  • Android highlight ImageButton onclick
  • Android SearchView onclick
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.