2012-04-27 42 views
9

Tôi hy vọng đây sẽ là câu hỏi đơn giản. Tôi có hoạt động chính, về hoạt động này, tôi tạo một thể hiện của một số lớp. Làm thế nào để gửi một số hình thức sự kiện một lớp để chính? Làm thế nào để thiết lập một số loại một người nghe để gửi thông báo giữa các lớp học. Chỉ có tùy chọn những gì tôi biết/sử dụng ngay bây giờ là giữ tham chiếu đến lớp cha và gọi trực tiếp một số chức năng từ lớp con.Android - trình nghe sự kiện

Tôi tự hỏi liệu có thể tạo ra thứ gì đó giống như trong ActionScript, nơi tôi có thể gọi đến dispatchEvent (new Event ("name")) và sau đó thiết lập addEventlistener ("name" function) ??

+0

"Tôi thực hiện một số lớp học" có nghĩa là rằng bạn đã khai báo một lớp lồng nhau bên trong lớp Activity của bạn? – Chopin

Trả lời

18

Nếu "Tôi thực hiện một số lớp" có nghĩa là bạn đã khai báo một lớp lồng trong lớp Activity của bạn hơn lớp lồng nhau không tĩnh sẽ có tham chiếu đến đối tượng lớp cha.

Nói chung, bạn luôn có thể tự tạo mô hình điều phối/người nghe. Tạo giao diện người nghe và thêm phương thức addListener hoặc setListener vào lớp sẽ gửi sự kiện.

Ví dụ về người nghe:

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

Ví dụ về sự kiện phối:

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

Ví dụ về lớp học với sự kiện người nghe:

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

Chỉ cần thực hiện một người biết lắng nghe (hoặc một danh sách người nghe) trên lớp tạo ra các sự kiện.

Khi một sự kiện được tạo ra lặp trên danh sách này và gọi một phương thức mà tất cả các thính giả phải thực hiện (thông qua một giao diện có thể?)

Hy vọng nó sẽ giúp, JQCorreia

Các vấn đề liên quan