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!

  • Iniciar nueva actividad desde ListFragment utilizando onListItemClick ()
  • Cómo usar visible e invisible para un botón en android
  • Obtener la latitud y la longitud de un clic en el mapa en osmdroid
  • Android cómo escribir clic evento de un ImageView
  • Las vistas de Android amplían la animación
  • Android llama al método onClick sin hacer clic
  • Hacer diferencias entre setOnClickListener y setOnTouchListener
  • Android no puede encontrar mi método onClick
  • ¿Por qué OnClickListener en un ViewHolder no funciona?
  • Android: ¿Cómo harías que los botones no se pudieran hacer clic durante algún tiempo?
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.