独自のリスナー/コールバックを実装します。たとえば、onCloseListener インターフェイスを作成します。アクティビティはインターフェイスを実装し、ダイアログはsetOnCloseListener
メソッドを実装します。ダイアログを作成するときに、アクティビティを onCloseListener として割り当てます。ダイアログが閉じるときに、アクティビティに実装されているインターフェイス メソッドを呼び出します。
DrawView というカスタム ビュー内で宣言されたリスナー インターフェイスと実装の例を次に示します。
public interface OnUndoEventListener {
public abstract void onUndoEvent();
}
ListenerInfo getListenerInfo() {
if (mListenerInfo != null) {
return mListenerInfo;
}
mListenerInfo = new ListenerInfo();
return mListenerInfo;
}
public void setOnUndoEventListener(OnUndoEventListener l) {
getListenerInfo().mOnUndoEventListener = l;
}
static class ListenerInfo {
private OnUndoEventListener mOnUndoEventListener;
}
ListenerInfo mListenerInfo;
これは、アクティビティの実装宣言とリスナーの設定です。
public class MyActivity extends Activity implements DrawView.OnUndoEventListener {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mDrawView = new DrawView(this, ...);
mDrawView.setOnUndoEventListener(this);
...
};
@Override
public void onUndoEvent() {
...
}
...
}
DrawView でコールバックを呼び出す:
private void someMethod(){
if (getListenerInfo().mOnUndoEventListener != null)
getListenerInfo().mOnUndoEventListener.onUndoEvent();
....
};