Android - 事件监听器

时间:2012-04-27 14:40:15

标签: android class events android-activity listener

我希望这是一个简单的问题。 我有主要活动,在这个活动中我创建了一个类的实例。如何将一个事件从一个类发送到主类?如何设置某种监听器来在类之间发送通知。只有我现在知道/使用的选项是保持对父类的引用并直接从子类调用一些函数。

我想知道是否有可能在ActionScript中创建类似的东西,我可以在其中调用dispatchEvent(new Event(“name”))以及稍后设置addEventlistener(“name”函数)??

2 个答案:

答案 0 :(得分:18)

如果“我实现某个类”意味着你在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 :(得分:1)

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

当生成事件时迭代此列表并调用所有侦听器必须实现的方法(通过接口可能?)

希望它有所帮助, JQCorreia