Android – detector de eventos
Espero que esto sea simple pregunta. Tengo actividad principal, en esta actividad creo una instancia de alguna clase. ¿Cómo enviar algún evento de una clase a la principal? Cómo configurar algún tipo de escucha para enviar notificaciones entre clases. Sólo opción lo que sé / uso ahora es mantener la referencia a la clase padre y llamar directamente a alguna función de la clase hijo.
Me pregunto si es posible crear algo como es en ActionScript, donde puedo llamar a dispatchEvent (nuevo evento ("nombre")) y más tarde la instalación addEventlistener (función "nombre") ??
- Transición de la actividad: Realización de la parada de la actividad que no se reanuda
- App Crash en Actividad de Cultivos en 2.1.2.2 etc pero funciona en 1.6
- La aplicación de Android no puede iniciar la actividad componentinfo
- Android - ¿Por qué utilizar una Interfaz considerada la mejor práctica de comunicación entre Actividad y Fragmento?
- ¿Por qué mi actividad de Android permanece vacía después de adquirir permisos y agregar datos de lista a él?
- ¿Cuál es el ciclo de vida de una variable pública estática en Android?
- ¿Por qué reanudar una actividad en Android causa BadTokenException?
- En Activity.onCreate (), ¿por qué Intent.getExtras () a veces devuelve null?
- Android: ¿Cómo actualizar una interfaz de usuario de AsyncTask si AsyncTask está en una clase aparte?
- Cómo centralizar el permiso de tiempo de ejecución cuando tenemos varias actividades
- Android clicable Widget con ListView no se puede hacer clic en ListItems
- Cómo iniciar / iniciar la aplicación durante el arranque Android
- Incorporar datepicker dentro de un Acitivity
Si "implemento alguna clase" significa que ha declarado una clase anidada dentro de su clase de actividad que la clase no estática anidada tendrá una referencia al objeto de clase padre.
En general, siempre se puede crear patrón de despachador / oyente de su auto. Cree la interfaz de escucha y agregue el método addListener o setListener a la clase que distribuirá el evento.
Ejemplo de escucha:
public interface IAsyncFetchListener extends EventListener { void onComplete(String item); void onError(Throwable error); }
Ejemplo de despachador de eventos:
public class FileDownloader { IAsyncFetchListener fetchListener = null; ... private void doInBackground(URL url) { ... if (this.fetchListener != null) this.fetchListener.onComplete(result); } public void setListener(IAsyncFetchListener listener) { this.fetchListener = listener } }
Ejemplo de clase con el detector de eventos:
public class MyClass { public void doSomething() { FileDownloader downloader = new FileDownloader(); downloader.setListener(new IAsyncFetchListener() { public void onComplete(String item) { // do something with item } public void onError(Throwable error) { // report error } }); downloader.start(); } }
Basta con implementar un listener (o una lista de listeners) en la clase que genera los eventos.
Cuando se genera un evento iterar sobre esta lista y llamar a un método que todos los oyentes deben implementar (a través de una interfaz tal vez?)
Espero que ayudó, JQCorreia
- ¿Hay una manera de evitar tener FullView SearchView / Keyboard en el paisaje?
- DatePickerDialog con el tema Holo Light?