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

Respuesta
 
Herramientas
  #1  
Viejo 03/09/10, 14:53:58
Array

[xs_avatar]
Kitinz Kitinz no está en línea
Usuario poco activo
 
Fecha de registro: abr 2010
Mensajes: 46

Dudas de novato

Buenas a todos.

Como otros tantos estoy iniciandome en la programación en Android ya que voy a desarrollar un pequeño proyecto para esta plataforma.

He estado unos días leyendo algo de documentación y ahora estoy siguiendo un par de tutoriales para empezar a coger algo de soltura. El caso es que he creado dos botones, uno para sumar y el otro para restar, para eso he hecho lo siguiente:

Código:
action = (Button) findViewById(R.id.btSuma);
action.setOnClickListener(new View.OnClickListener() {    
            public void onClick(View v) {
            //Código para hacer la suma
            }
});


action = (Button) findViewById(R.id.btResta);
action.setOnClickListener(new View.OnClickListener() {    
            public void onClick(View v) {
            //Código para hacer la resta
            }
});
Y mi pregunta es: ¿Esta es la forma correcta de asignarle la funcionalidad al botón? ¿Poniendo el Listener justo debajo del findViewById? Porque en el Listener no veo forma de distinguir un botón de otro...



Por cierto, otra cosa de la que no estoy seguro:

El formato del código que os he puesto es el que venía en el tutorial, pero se me hace raro que en los argumentos del setOnClickListener() se ponga la función View.onClickListener con su código de ejecución incluido en vez de tenerla definida fuera y simplemente hacer la llamada:

Código:
action.setOnClickListener(new View.OnClickListener());
Aunque acabo de darme cuenta que dentro lleva otra funcion, public void onClick(), así que ya no se si estoy diciendo algo con sentido o sin el .



En fin, a ver si alguien me puede ayudar a solventar estas dudas existenciales
Gracias!
Responder Con Cita

S30_HILOS_PC

  #2  
Viejo 03/09/10, 17:12:25
Array

[xs_avatar]
pmaicas pmaicas no está en línea
Desarrollador
 
Fecha de registro: dic 2008
Mensajes: 1,299

Se puede hacer de varias formas, y esta es una de ellas.

Aqui creas (el compilador lo hace por ti) dos clases diferentes y en ambas implementas onclicklistener, el código de ambas es diferente, no necesitas distinguir uno de otro (aunque podrías).

Tambien puede implemntar onclicklistener en una sola clase, típicamente la misma activity, y entonces asignas setonclicklistener(this) a ambos botones. Implementas onClick(View v) y entonces el código es común a ambos botones. Necesitas pues diferenciar el bton puldado, que puedes hacer con un switch(v.getId()) { case R.id.Boton1: ....

Otra opcion más facil todavía, a partir de la version 1.6 del sdk, asigna un nombre de funcion en el layout, al definir el boton, hay una propiedad onclick. Puedes asignar el mismo nombre de funcion o diferente a ambos botones, y no necesitas extender onclicklistener ni nada, una simple funcion con un nombre cuaquiera vale (pero que sea public y con un parámetro View)

Espero no haberte liado más.
__________________
Saludos
-Pedro-
http://www.maicas.net/ (desarrollo de software)
http://droid.maicas.net/ (solo android)
Responder Con Cita
  #3  
Viejo 04/09/10, 16:18:23
Array

[xs_avatar]
Kitinz Kitinz no está en línea
Usuario poco activo
 
Fecha de registro: abr 2010
Mensajes: 46

Mmm, voy a ir por partes a ver si te he entendido bien


 Cita: Originalmente Escrito por pmaicas Ver Mensaje
Se puede hacer de varias formas, y esta es una de ellas.

Aqui creas (el compilador lo hace por ti) dos clases diferentes y en ambas implementas onclicklistener, el código de ambas es diferente, no necesitas distinguir uno de otro (aunque podrías).

Este caso es el que he implementado yo y que pongo de ejemplo en el primer post, verdad?




 Cita: Originalmente Escrito por pmaicas Ver Mensaje
Tambien puede implemntar onclicklistener en una sola clase, típicamente la misma activity, y entonces asignas setonclicklistener(this) a ambos botones. Implementas onClick(View v) y entonces el código es común a ambos botones. Necesitas pues diferenciar el bton puldado, que puedes hacer con un switch(v.getId()) { case R.id.Boton1: ....

Esta implementación creo que me interesa, pues me evitaría duplicar funciones. Ahora tengo solo 2 botones, pero si se implementan más, imagino que es más eficiente y mejor tener solo un onClickListener que maneje todos los botones de la misma pantalla.

Según lo que dices, el código tendría que quedar así (le añado más botones porque sería lo mismo, verdad?):

Código:
action = (Button) findViewById(R.id.btSuma);
action = (Button) findViewById(R.id.btResta);
action = (Button) findViewById(R.id.btMult);
action = (Button) findViewById(R.id.btDiv);

action.setOnClickListener(new View.OnClickListener() {    
                public void onClick(View v) {
                     switch(v.getId()){
                           case R.id.btSuma:  {//Codigo para sumar}
                           case R.id.btResta: {//Codigo para restar}
                           case R.id.btMult:  {//Codigo para multiplicar}
                           case R.id.btDiv:   {//Codigo para dividir}
      }
                }
});

 Cita: Originalmente Escrito por pmaicas Ver Mensaje
Otra opcion más facil todavía, a partir de la version 1.6 del sdk, asigna un nombre de funcion en el layout, al definir el boton, hay una propiedad onclick. Puedes asignar el mismo nombre de funcion o diferente a ambos botones, y no necesitas extender onclicklistener ni nada, una simple funcion con un nombre cuaquiera vale (pero que sea public y con un parámetro View)

Cuando dices que le asigne la funcion en el layout te refieres en el main.xml? Y la función que le asigne a la propiedad onclick la implemento en el .java?




 Cita: Originalmente Escrito por pmaicas Ver Mensaje
Espero no haberte liado más.

No, no me has liado. Entiendo que hay varias maneras de hacer lo mismo, aunque me gustaria saber cual es la manera "correcta" de hacerlo. Es decir, si existen reglas de estilo o que forma es la más extendida (Dando por supuesto que la más extendida sea la "mas sencilla" )

En fin, que muchas gracias por contestar, aunque no he tardado en volver a dar la lata
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 21:20:43 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /