なぜAndroidで Диаログ.dismissが無効になるの?

Androidのダイアログを閉じるときは、Dialog.dismiss()メソッドを使います。それでも閉じないときは、次のような原因が考えられます。

  1. Dialog.dismiss()を呼び出すコードがメインスレッドで動作するようにしてください。 サブスレッドでDialog.dismiss()を呼び出した場合は、Handlerを使用してメインスレッドで実行するように切り替える必要があります。
  2. Dialog.show()メソッドが呼び出されたかどうかを、Dialog.dismiss()メソッドを呼び出す前に確認してください。ダイアログが表示されていない場合、Dialog.dismiss()を呼び出しても効果はありません。
  3. Dialog オブジェクトが有効かどうかを確認します。Dialog オブジェクトが null であったり、既に解放されていると、Dialog.dismiss() を呼び出しても効果がありません。
  4. AlertDialog.Builderからダイアログを作成している場合は、AlertDialog.Builder.create()メソッドでダイアログオブジェクトを作成し、その後にDialog.show()メソッドとDialog.dismiss()メソッドを呼び出します。
  5. Dialog.dismiss()の前に他の時間を要する操作を行っているかどうかを確認します。Dialog.dismiss()の前に時間を要する操作を行っていると、Dialog.dismiss()は無効になる可能性があります。時間を要する操作をDialog.dismiss()の後で実行するように移動してみてください。
  6. 上記のいずれの方法でも解決しない場合は、Dialog.cancel() メソッドを使用してダイアログを強制的に閉じます。Dialog.cancel() メソッドは Dialog.OnCancelListener コールバックをトリガーし、コールバックでダイアログがキャンセルされた時の動作を処理します。

現状に合わせて上記の方法を試行錯誤して、自分に合った解決策を見つけてください。

bannerAds