Pergunta sobre android-activity, android, listener, events, class – Android - ouvinte de eventos

9

Espero que esta seja uma pergunta simples. Eu tenho atividade principal, nesta atividade eu crio uma instância de alguma classe. Como enviar algum formulário de evento para uma das principais? Como configurar algum tipo um ouvinte para enviar notificações entre classes. A única opção que eu sei / uso agora é manter a referência à classe pai e chamar diretamente alguma função da classe filha.

Pergunto-me se é possível criar algo como está no ActionScript, onde eu posso chamar para dispatchEvent (new Event ("name")) e depois setup addEventlistener ("name" function) ??

"Eu implementar alguma classe" significa que você declarou uma classe aninhada dentro de sua classe Activity? Chopin

Sua resposta

2   a resposta
18

Eu implementar alguma classe" significa que você declarou uma classe aninhada dentro de sua classe Activity do que uma classe não estática aninhada terá uma referência ao objeto de classe pai.

Em geral, você sempre pode criar seu próprio padrão de despachante / ouvinte. Crie interface de ouvinte e adicione o método addListener ou setListener à classe que enviará o evento.

Exemplo de ouvinte:

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

Exemplo de expedidor 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>

Exemplo de classe com ouvinte de evento:

<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>
1

gera os eventos.

Quando um evento é gerado iterar sobre esta lista e chamar um método que todos os ouvintes devem implementar (através de uma interface talvez?)

Espero que tenha ajudado, JQCorreia

Perguntas relacionadas