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 07/01/11, 03:13:51
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Sobre listeners va la cosa

Buenas.

Estoy intentando iniciarme en Android en plan autodidacta. Y despues de echarle el ojo a algunos libros (tengo el Hello Android camino de casa desde Amazon), no me queda claro como se utilizan los action listeners. Me lo podria alguien explicar en plan para tontos, o pasarme algun link donde lo expliquen de ese modo? Es que esta tarde he estado mirandolo, en varios sitios distintos, y lo unico que he conseguido ha sido marearme. jeje

Gracias.
Responder Con Cita


  #2  
Viejo 07/01/11, 10:59:46
Array

[xs_avatar]
asturdeibiz asturdeibiz no está en línea
Usuario poco activo
 
Fecha de registro: ago 2010
Localización: Asturias
Mensajes: 49
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Te refieres a los event listeners, supongo.

Sirven para definir el código que se ejecutará en un determinado evento(clic, clic largo, pulsación,...). En la página de desarrolladores de Android hay bastante información de como emplearlos.
http://developer.android.com/guide/t...ui-events.html

Básicamente hay que hacer dos cosas en el código para que funcionen, pongamos un botón llamado button1 que deseamos actualice cierta información cuando se pulse.

Lo primero es registrar el evento, esto es decir que para este botón cuando sea pulsado queremos que se ejecute un trozo de código concreto:

button1.setOnClickListener(button1Listener)

Ahí estamos diciendo que cuando se haga un clic normal se ejecutará button1Listener. Eso puede ir en casi cualquier parte del código pero lo mejor es ponerlo en onCreate() de la actividad. A partir del momento de registrar el evento, da = en que parte de la actividad se esté, cuando se pulse el botón se ejecutará el código especificado.

button1Listener está definido dentro de la misma clase y sería algo así:

private OnClickListener button1Listener = new OnClickListener() {
public void onClick(View v) {
//pones el codigo que necesites
}
};

Esto es para que sirve y como se implementan los event listener, espero que sea lo que preguntas. Hay más formas de implementarlo, también puedes poner el código del evento y registrarlo a la vez, pero yo creo que es más limpio dejar el código así.

Como ya he dicho para cada control hay más eventos, solo cambia el nombre del método al que llamar, por ejemplo para una pulsación larga habría que sustituir onClick por onLongClick.
__________________

Última edición por asturdeibiz Día 07/01/11 a las 11:02:03.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 07/01/11, 14:08:09
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Muchas gracias tio. Asi explicado es mucho mas facil de entender. Eso o es que ayer estaba muy espeso.

Si no te importa, puedo preguntarte algo mas? jeje

Esto es un ejemplo de un ejercicio que hice ayer:

Button button1 = (Button) findViewById(R.id.button1);

button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
funcion_que_sea();
}
});


Es algo distinto a lo que tu pusiste. Por lo que veo, en la 2a sentencia, junto las 2 que tu me dijiste? Por que la primera lo unico que hace es asociar el boton con el del layout, no?

Gracias otra vez.

Última edición por Duqe Día 07/01/11 a las 14:10:47.
Responder Con Cita
  #4  
Viejo 07/01/11, 16:28:24
Array

[xs_avatar]
asturdeibiz asturdeibiz no está en línea
Usuario poco activo
 
Fecha de registro: ago 2010
Localización: Asturias
Mensajes: 49
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Pues es lo mismo, solo que registras y declaras el código que se ejecutará en la misma línea.

poner en onCreate():
Código:
button1.setOnClickListener(button1Listener);
y un método fuera de onCreate() pero en la misma actividad:
Código:
private OnClickListener button1Listener = new OnClickListener() {
public void onClick(View v) {
//pones el codigo que necesites
}
};
es lo mismo que lo que has puesto tú poniendo todo el código dentro de onCreate():

Código:
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
funcion_que_sea();
}
});
La otra línea que pones es necesaria en ambos casos(yo la omití)
Código:
Button button1 = (Button) findViewById(R.id.button1);
y sirve para poder referenciar el objeto button1, es algo así como que busca un objeto en el layout que tenga de Id=R.id.button1 y te devuelve una referencia para que tú puedas cambiar sus características. Es totalmente necesaria si vas a trabajar con un objeto pues necesitas su referencia pero que si no fueras a hacer nada con él no necesitas. Es simplemente como pedir una dirección para saber donde esta el objeto que estas modificando. Para entender más esto busca punteros en C++.
__________________
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 07/01/11, 16:37:21
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Perfecto. Asi da gusto preguntar.

Gacias!
Responder Con Cita
  #6  
Viejo 07/01/11, 16:58:53
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Acabo de ver este videotutorial:



Y segun veo, se puede poner un atributo como el onclick, directamente en el layout. Con lo cual no hace falta implementar los listeners. Si miras el video, a partir del minuto 12:30 lo explica.
Responder Con Cita
  #7  
Viejo 07/01/11, 17:59:10
Array

[xs_avatar]
asturdeibiz asturdeibiz no está en línea
Usuario poco activo
 
Fecha de registro: ago 2010
Localización: Asturias
Mensajes: 49
Modelo de smartphone: Nexus One
Tu operador: Vodafone
Cierto, te ahorras el tener que registrarlo. Yo he usado hasta ahora el método que comentábamos sin tocar el xml, pero leyendo:
http://stackoverflow.com/questions/4...ttribute-usage
http://android-developers.blogspot.c...ndroid-16.html
parece que la gente está más a favor de hacerlo en el xml.
__________________
Responder Con Cita
  #8  
Viejo 07/01/11, 18:24:17
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Pues parece que si. Te ahorras codigo y lo hace mas legible.
Responder Con Cita
  #9  
Viejo 08/01/11, 21:20:02
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Por no abrir un hilo nuevo, pongo aqui un pequeño error que tengo. Es con un boton. El cual da FC cada vez que le hago click. Y no se que probar. En principio llamaba a otra activity con su intent y tal. Pero viendo que no funcionaba, probe a que modificase un EditText. Pero nada, sigo igual.

Por no copiarlo todo de nuevo, pongo el link a stackoverflow (donde tambien pregunte):

http://stackoverflow.com/questions/4...-with-a-button

Gracias.
Responder Con Cita
  #10  
Viejo 09/01/11, 00:11:21
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Bueno, ya me dieron la respuesta en stackoverflow. Al parecer el error estaba en que yo declaraba la variable link en la actividad main, y luego declaraba de nuevo otra vez la variable link en el onCreate.

Pd: Me sorprende la web de stackoverflow. Con la cantidad de preguntas que se realizan, y siempre hay alguien dispuesto a echarte un cable. Con gente asi da gusto preguntar.
Responder Con Cita
Respuesta

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



Hora actual: 11:43:27 (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 / 邮件联系 /