¿Cómo agregar un oyente general para todos los botones (no intrusivo)?

Intento reproducir un sonido cuando presionas cualquier botón de la aplicación.

¿Cómo es la forma menos intrusiva de agregar el oyente a todos los botones de la aplicación?

¿Puedo agregar sobrescribir (y extender) el oyente genérico de Android?

Gracias.

Usted puede fijar un oyente para todos los botones y se puede identificar con la etiqueta también.

View.OnClickListener myClickLIstener= new View.OnClickListener() { public void onClick(View v) { String tag = (String) v.getTag(); Log.e("","tag : "+tag) // your stuff } }; 

configurar oyentes …

 btn1.setOnClickListener(myClickLIstener); btn1.setTag("btn1"); btn2.setOnClickListener(myClickLIstener); btn2.setTag("btn2"); 

EDIT:

¿Estás buscando esto?

 class superTop implements View.OnClickListener { @Override public void onClick(View v) { Log.e("", "onClick superTop"); } } class NewClick extends superTop implements View.OnClickListener { @Override public void onClick(View v) { Log.e("", "onClick NewClick"); super.onClick(v); } } findViewById(R.id.button1).setOnClickListener(new NewClick()); 

Puedes llamar al oyente …

Puede hacer esto primero permita que su clase implemente el OnClickListener

 button1.setOnClickListener(this); button2.setOnClickListener(this); 

En el método onClick, haga lo siguiente:

 public void onClick(View view) { switch(view.getId()){ //here you need the id of the button ie its id in the xml file case R.id.button1: // do whatever you want button1 to do break; case R.id.button2: // do whatever you want button2 to do break; } } 

O SOLO

 class YourClass implements OnClickListener{ buttonOne.setOnclickListener(this); buttonTwo.setOnclickListener(this); buttonThree.setOnclickListener(this); public void onClick(View v){ //do your stuff; } } 

O si usted tiene gusto, haga su botón de encargo:

 Class Yourbutton extends Button implements Button.OnClickListener{ public Yourbutton(Context c) { super(c); } public Yourbutton(Context c,AttributeSet s){ super(c,s); } public void onClick(View v){ //do your stuff; } } 

Así que ahora puede utilizar Yorkbutton como el botón genérico que hace los trabajos genéricos.

Puede usar el atributo android:onClick . Establecer el mismo método onClick a todos ellos de esta manera:

 <Button [...] android:onClick="handleButton"/> <Button [...] android:onClick="handleButton"/> 

Y en su archivo java:

 public void handleButton(View v){ // do some stuff } 

Crear un clic Escucha como este y llamar desde todos sus botones si desea que hagan lo mismo

 View.OnClickListener yourClickListener = new View.OnClickListener() { public void onClick(View v) { //play the music } }; 

Entonces llama a ese oyente

 button1.setOnClickListener(yourClickListener); button2.setOnClickListener(yourClickListener); button3.setOnClickListener(yourClickListener); 

Llame a los mismos métodos de los botones que desea trabajar igual que

 <LinearLayout ...> <Button android:text="1" onClick="onButtonClicked" clickable="true" /> <Button android:text="2" onClick="onButtonClicked" clickable="true" /> <Button android:text="3" onClick="onButtonClicked" clickable="true" /> <Button android:text="4" onClick="onButtonClicked" clickable="true" /> </LinearLayout> 

Por encima de cuatro botones tienen texto diferente pero onClick que están teniendo el mismo método ahora no hay necesidad de obtenerlos en la clase java usando findViewById.

En la actividad en la que se muestra el diseño, simplemente añada un método

 public void onButtonClicked(View v){ // do whatever needs to be done. For example: Toast.makeText(getApplicationContext(), ((Button) v).getText() + " clicked", Toast.LENGTH_SHORT).show(); } 

Segundo método

No es necesario repetir el mismo código para todos. Usted puede probar un oyente genérico, como:

 private OnClickListener genericClickListener= new OnClickListener() { public void Click(View v) { // do something } }; 

Entonces todo lo que tienes que hacer es registrar los tres botones para usar este genicClickListener. Es decir, dentro de onCreate() ,

 Button firstbtn = (Button) findViewById(R.id.firstbtn); Button secondbtn = (Button) findViewById(R.id.secondbtn); Button thirdbtn = (Button) findViewById(R.id.thirdbtn); firstbtn.setOnClickListener(genericClickListener); secondbtn.setOnClickListener(genericClickListener); thirdbtn.setOnClickListener(genericClickListener); 

Tercer método

Crear una sola función / método y onClick de todas las llamadas de botón el mismo Method/Function .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.