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") ??
- Flag Activity Clear Top destruye la actividad objetivo y que la crea
- ¿Cómo desactivar el golpe de sólo el cajón de navegación derecho?
- Cómo centralizar el permiso de tiempo de ejecución cuando tenemos varias actividades
- Android - onStop () se llamará con un retardo
- Animación de diapositivas de la actividad con overridePendingTransition teniendo un efecto extraño
- Android: mantén agregado previamente la intención adicional cuando vayas a la actividad de los padres
- Android clicable Widget con ListView no se puede hacer clic en ListItems
- La acción de notificación de Android no se activa (PendingIntent)
- ¿Cuál es el ciclo de vida de una variable pública estática en Android?
- Classcastexception android en inicio de actividad
- Android - ¿Por qué utilizar una Interfaz considerada la mejor práctica de comunicación entre Actividad y Fragmento?
- ¿Cómo iniciar una actividad desde una clase java?
- App Crash en Actividad de Cultivos en 2.1.2.2 etc pero funciona en 1.6
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?