|
||
|
![]() |
![]() |
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
|
||||
|
||||
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. |
|
#2
|
||||
|
||||
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. |
Gracias de parte de: | ||
#3
|
||||
|
||||
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. |
#4
|
||||
|
||||
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); Código:
private OnClickListener button1Listener = new OnClickListener() { public void onClick(View v) { //pones el codigo que necesites } }; Código:
button1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { funcion_que_sea(); } }); Código:
Button button1 = (Button) findViewById(R.id.button1); |
Gracias de parte de: | ||
#5
|
||||
|
||||
Perfecto. Asi da gusto preguntar.
Gacias! ![]() |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
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. |
#8
|
||||
|
||||
Pues parece que si. Te ahorras codigo y lo hace mas legible.
|
#9
|
||||
|
||||
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. |
#10
|
||||
|
||||
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. |
![]() |
![]() |
||||||
|