2011-04-26 7 views

답변

4

는 옥타비아누스의 대답 비트를 추가하려면 것

public class ExternalClickListener implements View.OnClickListener { 

    @Override 
    public void onClick(View v) { 
     // Do whatever you want. 
    } 

} 

지금 당신이 Button에 그것을 설정하려는 경우, 당신은 실제로 하나의 핸들러 클래스하지만 활동 당 하나 개의 인스턴스가됩니다. 예를 들어

: 활동에서 그런

public class MyHandler extends Handler { 
    // Keep a weak reference to the activity owning the handler 
    private WeakReference<Activity> activityRef; 

    public MyHandler(Activity a) { 
    this.activityRef = new WeakReference<Activity>(a); 
    } 

    public void handleMessage(Message msg) { 
    // do your stuff here, for instance, finish the activity 
    if (activityRef.get()!=null) { 
     activityRef.get().finish(); 
    } 
    } 
} 

가 :

public class MyActivity extends Activity { 
    protected MyHandler handler; 

    public void onCreate() { 
    // This is where you'll re-use the handler code 
    handler = new MyHandler(this); 
    } 
} 
+0

재미 있습니다. 저는 Handler에게 Listener를 생각했습니다. 이제 앉아서 생각할 때 실제로 Handler 클래스가 있다는 것을 알게되었습니다. : D –

+0

이유는 동일합니다. 변경 될 확장 클래스 또는 구현 된 인터페이스 일뿐입니다. –

+0

당신이 제공 한 답변에 대해 Marvin과 Octavian에게 감사드립니다. 이제는 하나의 활동이 마스터이고 다른 하나가 슬레이브 활동 인 것과 같은 조각 유형을 통해이를 원합니다. – Mak

-2

이 핸들러를 static으로 선언하고 액세스하십시오 : MyClass.myHandler.

+0

그것은 최선의 방법은 아닙니다. –

+0

이것이 최선의 방법이 아닌 이유. 왜 핸들러가 정적 일 수 없습니까? – senzacionale

2

물론. 원하는 인터페이스를 구현하는 새 클래스를 만들고 필요한 경우 인스턴스를 만듭니다.

예를 들어 OnClickListener을 사용하십시오. 클래스 ExternalClickListener을 만듭니다. 이

btn.setOnClickListener(new ExternalClickListener()); 
+0

당신이 제공 한 답변에 대해 Octavian과 Marvin에게 감사드립니다. 이제는 하나의 활동이 마스터이고 다른 하나가 슬레이브 활동 인 것과 같은 조각 유형을 통해이를 원합니다. – Mak

관련 문제