0

アプリにネットワークモニター(ブロードキャストレシーバーを使用)があります。電話がインターネットに接続されていない場合はアラートダイアログが表示され、電話が接続されている場合は別のアラートが表示され、ユーザーにオンラインに戻ったことを通知します。問題は、モニターが状態の変化を検出するたびに、他のウィンドウの上にスタックする別のウィンドウを作成することです。たとえば、電話のDATA ON / OFFが3回ある場合、6つのメッセージが表示されます。別のダイアログが開いた場合にアラートダイアログを閉じる方法はありますか、またはこのシナリオを克服するための最良のアプローチは何でしょうか?

よろしくお願いします。Android初心者

4

3 に答える 3

1

現在表示されているダイアログを含む変数を追加します。

            Alertdialog a;

そして、あなたがそれを見せたいとき:

if (a!=null) {
    a.cancel();
}
a = yourDialogBuilder.show();

お役に立てれば。

于 2013-02-12T17:48:29.423 に答える
0

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

于 2013-02-12T17:28:44.567 に答える
-1

通知メカニズムの再設計を検討する必要があると思います。使用Dialogすると、アプリの自然な流れを閉じて中断するアクションが必要になるため、ユーザーエクスペリエンスに非常に支障をきたす可能性があります。

Toast単純な通知に使用するかNotification、ステータスバーに表示することを検討してください。また、現在の接続ステータスを反映するアイコンをアプリケーションに含めることができます。たとえば、緑は接続されており、それ以外の場合は赤です。

使用可能なダイアログが1つだけであることを確認するには、でダイアログのstaticインスタンスを作成し、新しいダイアログを表示する前にactivityない場合はそれを閉じます。null

于 2013-02-12T17:40:17.003 に答える