Pregunta sobre android, android-activity, listener, class, events – Android - oyente de eventos

9

Espero que esta sea una pregunta simple. 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. La única opción que sé / uso ahora es mantener la referencia a la clase principal y llamar directamente a alguna función desde la clase secundaria.

Me pregunto si es posible crear algo como en ActionScript, donde puedo llamar a dispatchEvent (nuevo Evento ("nombre")) y luego configurar addEventlistener (función "nombre").

"Implemento alguna clase" significa que ha declarado una clase anidada dentro de su clase de actividad? Chopin

Tu respuesta

2   la respuesta
1

que genera los eventos.

Cuando se genera un evento, repita esta lista y llame a un método que todos los oyentes deben implementar (¿quizás a través de una interfaz?)

Espero que haya ayudado, JQCorreia

18

Implemento alguna clase" significa que usted ha declarado que una clase anidada dentro de su clase de Actividad que la clase no estática anidada tendrá una referencia al objeto de clase principal.

En general, siempre puede crear su propio patrón de dispatcher / oyente. Cree una interfaz de escucha y agregue el método addListener o setListener a la clase que enviará el evento.

Ejemplo de oyente:

<code>public interface IAsyncFetchListener extends EventListener {
    void onComplete(String item);
    void onError(Throwable error);
}
</code>

Ejemplo de despachador de eventos:

<code>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
    }
}
</code>

Ejemplo de clase con oyente de eventos:

<code>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();
    }
}
</code>

Preguntas relacionadas