我的应用程序中有一个网络监视器(使用广播接收器),如果手机未连接到互联网,它会弹出一个警报对话框,如果手机重新连接,它会弹出另一个警报,通知用户他已重新上线。问题是每次监视器看到状态更改时,它都会创建另一个堆叠在另一个窗口之上的窗口。例如,如果手机的 DATA ON/OFF 3 次,它将弹出 6 条消息。如果另一个警报对话框打开,是否有办法关闭警报对话框,或者克服这种情况的最佳方法是什么?
提前感谢您,非常感谢您的帮助。安卓新手
我的应用程序中有一个网络监视器(使用广播接收器),如果手机未连接到互联网,它会弹出一个警报对话框,如果手机重新连接,它会弹出另一个警报,通知用户他已重新上线。问题是每次监视器看到状态更改时,它都会创建另一个堆叠在另一个窗口之上的窗口。例如,如果手机的 DATA ON/OFF 3 次,它将弹出 6 条消息。如果另一个警报对话框打开,是否有办法关闭警报对话框,或者克服这种情况的最佳方法是什么?
提前感谢您,非常感谢您的帮助。安卓新手
添加一个包含当前可见对话框的变量:
Alertdialog a;
然后当你想展示一个时:
if (a!=null) {
a.cancel();
}
a = yourDialogBuilder.show();
希望这可以帮助。
Dialog 有一个isShowing() 方法,如果对话框当前可见,该方法应该返回。因此,您可以使用它来查看对话框是否正在显示并使用dismissDialog() 将其隐藏。
我认为你应该考虑重新设计你的通知机制。使用Dialog
可能会非常干扰用户体验,因为它需要一个动作来关闭和中断应用程序的自然流程。
考虑使用Toast
简单的通知,或者Notification
如果您希望它显示在状态栏中。此外,您可以在应用程序中使用一些图标来反映当前的连接状态,例如绿色已连接,否则为红色。
为确保只有一个对话框可用,您可以static
在您的对话框中创建一个对话框实例,activity
如果不是,则null
在显示新对话框之前将其关闭