|
||
|
|
|
|||||||
| Avisos |
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Declarando función de botón
Hay diferentes métodos de declarar la función de un botón, y yo ahora mismo estoy entre dos, ya que no estoy seguro de la diferencia que hay entre estas dos.
Primer método: Código:
boton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Uno.this, Dos.class);
startActivity(intent);
}
});
Código:
boton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.boton1:
Intent intent = new Intent(Uno.this, Dos.class);
startActivity(intent);
finish();
break;
}
}
});
Última edición por KrLx_roller Día 24/12/11 a las 20:53:53. |
|
|
|
#2
|
||||
|
||||
|
A ver, con el código que has puesto sería más correcto el primer método, aunque ambos métodos son correctos.
Y ahora te explico la diferencia, en el segundo método tienes una condición de que solo se ejecute el código si el botón que has pulsado es boton1 (eso es lo que hace el switch), pero el código lo estás asociando directamente a boton1, con lo cual es redundante y sobra. Y ahora, ¿para que sirve entonces ese switch? El método setOnClickListener recibe como parametro un objeto de tipo OnClickListener, el cual puede estar ya definido a priori, y así usar el mismo código para varios botones, lo que ocurre es que la mayoría de la gente (y yo me incluyo) lo asociamos directamente al botón poniendo el new OnClickListener() en el método setOnClickListener. Así que ese switch solo tiene sentido en un caso como el siguiente: Código:
OnClickListener click = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.boton1:
Intent intent = new Intent(Uno.this, Dos.class);
startActivity(intent);
finish();
break;
case R.id.boton2:
Intent intent = new Intent(Uno.this, Tres.class);
startActivity(intent);
finish();
break;
}
}
};
boton1.setOnClickListener(click);
boton2.setOnClickListener(click);
Espero haberte aclarado la duda. Última edición por kriogeN Día 24/12/11 a las 20:10:12. |
|
#3
|
||||
|
||||
|
La has aclarado y ademas muy bien explicado. Pero ahora me salta otra duda: entonces qué es mejor? Declarar un solo ClickListener con un switch y añadir todos los botones en ese mismo, o declarar tantos Listener como botones haya?
Me refiero a cuál tendrá menos carga sobre la CPU, ya que en algunos Views tengo más de 10 buttons. Gracias! |
|
#4
|
||||
|
||||
|
Da igual, aunque yo veo mejor declarar un ClickListener para cada botón, tal y como estabas haciendo hasta ahora, así es más fácil hacer el mantenimiento del código.
|
![]() |
Estás aquí
|
||||||
|
||||||