Dialogのイベントを取得する

たとえばダイアログでキャンセルされたときや、ダイアログが閉じた時など
イベントを取得したいときはこんな風に書きます。

progress = new ProgressDialog(this);
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setOnKeyListener(new OnKeyListener() {
  @Override
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    // ハードキーが押されたとき呼ばれる
    return false;
  }
});
progress.setOnCancelListener(new OnCancelListener() {
  @Override
  public void onCancel(DialogInterface dialog) {
    // Resultがキャンセルのとき呼ばれる
  }
});
progress.setOnDismissListener(new OnDismissListener() {
  @Override
  public void onDismiss(DialogInterface dialog) {
    // Resultがなんであれ、ダイアログが消された時呼ばれる
    //onCancelが呼ばれた後にも呼ばれるので、二重に処理しないように注意
  }
});
progress.show();

コードではProgressDialog使ってるけど、もちろんDialogクラスでもいけます。
もっとイベントを取りたいときは(トラックボール使った時とか、メニューボタンが押されたときとか)
継承してOverrideすればいいんじゃないかな。