안녕하세요 하나 이상의 Activity.Can에 대해 단일 처리기 만 사용하고 싶습니다.둘 이상의 활동에 대해 하나의 UI 처리기를 사용할 수 있습니까?
답변
는 옥타비아누스의 대답 비트를 추가하려면 것
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);
}
}
재미 있습니다. 저는 Handler에게 Listener를 생각했습니다. 이제 앉아서 생각할 때 실제로 Handler 클래스가 있다는 것을 알게되었습니다. : D –
이유는 동일합니다. 변경 될 확장 클래스 또는 구현 된 인터페이스 일뿐입니다. –
당신이 제공 한 답변에 대해 Marvin과 Octavian에게 감사드립니다. 이제는 하나의 활동이 마스터이고 다른 하나가 슬레이브 활동 인 것과 같은 조각 유형을 통해이를 원합니다. – Mak
이 핸들러를 static
으로 선언하고 액세스하십시오 : MyClass.myHandler
.
그것은 최선의 방법은 아닙니다. –
이것이 최선의 방법이 아닌 이유. 왜 핸들러가 정적 일 수 없습니까? – senzacionale
물론. 원하는 인터페이스를 구현하는 새 클래스를 만들고 필요한 경우 인스턴스를 만듭니다.
예를 들어 OnClickListener
을 사용하십시오. 클래스 ExternalClickListener
을 만듭니다. 이
btn.setOnClickListener(new ExternalClickListener());
당신이 제공 한 답변에 대해 Octavian과 Marvin에게 감사드립니다. 이제는 하나의 활동이 마스터이고 다른 하나가 슬레이브 활동 인 것과 같은 조각 유형을 통해이를 원합니다. – Mak
정확히 무엇을 의미 했습니까? 'Handler' 또는'Listener'? –