0

我的应用程序中有一个网络监视器(使用广播接收器),如果手机未连接到互联网,它会弹出一个警报对话框,如果手机重新连接,它会弹出另一个警报,通知用户他已重新上线。问题是每次监视器看到状态更改时,它都会创建另一个堆叠在另一个窗口之上的窗口。例如,如果手机的 DATA ON/OFF 3 次,它将弹出 6 条消息。如果另一个警报对话框打开,是否有办法关闭警报对话框,或者克服这种情况的最佳方法是什么?

提前感谢您,非常感谢您的帮助。安卓新手

4

3 回答 3

1

添加一个包含当前可见对话框的变量:

            Alertdialog a;

然后当你想展示一个时:

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

希望这可以帮助。

于 2013-02-12T17:48:29.423 回答
0

Dialog 有一个isShowing() 方法,如果对话框当前可见,该方法应该返回。因此,您可以使用它来查看对话框是否正在显示并使用dismissDialog() 将其隐藏。

于 2013-02-12T17:28:44.567 回答
-1

我认为你应该考虑重新设计你的通知机制。使用Dialog可能会非常干扰用户体验,因为它需要一个动作来关闭和中断应用程序的自然流程。

考虑使用Toast简单的通知,或者Notification如果您希望它显示在状态栏中。此外,您可以在应用程序中使用一些图标来反映当前的连接状态,例如绿色已连接,否则为红色。

为确保只有一个对话框可用,您可以static在您的对话框中创建一个对话框实例,activity如果不是,则null在显示新对话框之前将其关闭

于 2013-02-12T17:40:17.003 回答