Android - 事件监听器

9
我希望这是一个简单的问题。 我有一个主Activity,在这个Activity上,我创建了某个类的实例。如何从一个类发送事件到主类?如何设置某种监听器以在类之间发送通知?目前我知道/使用的唯一选项是保留对父类的引用,并直接从子类调用某些函数。
我想知道是否可能创建类似于ActionScript中的内容,我可以调用dispatchEvent(new Event("name")),然后稍后设置addEventlistener("name" function)?

“我实现了一些类”是指您在Activity类中声明了一个嵌套类吗? - Chopin
2个回答

19
如果“我实现了一些类”意味着你已在Activity类中声明了一个嵌套类,那么嵌套的非静态类将具有对父类对象的引用。
一般来说,你总是可以自己创建分发/监听器模式。创建监听器接口并将addListener或setListener方法添加到将分派事件的类中。
监听器的示例:
public interface IAsyncFetchListener extends EventListener {
    void onComplete(String item);
    void onError(Throwable error);
}

事件分发器的示例:

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

具有事件监听器的类示例:

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

1

只需在生成事件的类上实现一个监听器(或监听器列表)。

当事件被生成时,遍历此列表并调用所有监听器必须实现的方法(通过接口实现?)

希望有所帮助, JQCorreia


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接