1

コードでダイアログを開くBaseActivityがありますが、このクラスコードを変更できないため、サブクラスで拡張し、ダイアログが開いていることを知る方法はありますか?

4

2 に答える 2

1

オーバーライドしようとすることができますonCreateDialog()。これにより、Activity が を呼び出すときに使用される参照 ID が渡されますshowDialog(id)。何かが表示されるかどうかを知る必要がある場合Dialogは、表示されるダイアログを返す super を呼び出すことができると思います。

@Override
protected Dialog onCreateDialog(int id){
   Dialog dialogToBeShown = super.onCreateDialog(id);
   if(dialogToBeShown != null){
      ***Do whatever you have to with the dialog***
   }
   return dialogToBeShown;
}

編集:

これは、ダイアログが最初に作成されたときにのみ機能します。onPrepareDialog(int id, Dialog dialog, Bundle args)ダイアログが開いているときに常に呼び出される同様のことを行うことができます。

于 2011-09-20T17:22:02.150 に答える
0

ダイアログには、ダイアログが現在表示されている場合に返される isShowing() メソッドがあります。したがって、それを使用して、ダイアログが表示されているかどうかを確認し、dismissDialog() で非表示にすることができます。onCreateDialog() で作成したダイアログへの参照を保持するだけです。

于 2011-09-20T14:27:34.817 に答える