2012-04-27 3 views
9

간단한 질문이되기를 바랍니다. 주 활동이 있는데,이 활동에서 나는 어떤 수업의 사례를 만듭니다. 하나의 클래스를 주 클래스로 보내는 방법은 무엇입니까? 어떤 종류의 리스너를 설치하여 클래스간에 알림을 보내는 방법. 지금 알고있는/사용하는 유일한 옵션은 부모 클래스에 대한 참조를 유지하고 자식 클래스에서 직접 일부 함수를 호출하는 것입니다.Android - 이벤트 수신기

ActionScript에서 dispatchEvent (new Event ("name"))를 호출하고 나중에 addEventListener ("name"함수)를 호출 할 수있는 기능이 있는지 궁금합니다.

+0

수단 "나는 몇 가지를 구현" Activity 클래스 내에 중첩 클래스를 선언 했습니까? – Chopin

답변

18

"일부 클래스 구현"은 중첩되지 않은 비 정적 클래스보다 상위 클래스가 상위 클래스 객체에 대한 참조를 가질 것임을 의미합니다.

일반적으로 Dispatcher/Listener 패턴을 생성 할 수 있습니다. 청취자 인터페이스를 작성해, 이벤트를 송출 (Dispatch)하는 클래스에 addListener 또는 setListener 메소드를 추가합니다. 청취자의

예 : 이벤트 리스너 클래스의

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

그냥 리스너를 구현 (또는 목록의 이벤트 발송자의

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

예 리스너)를 생성합니다. 이벤트가이 목록 반복을 생성하고 모든 청취자가 구현해야하는 방법 호출 (아마도 인터페이스를 통해?)를

가 도움이 희망

, JQCorreia

관련 문제