//温度超过最大值 runOnUiThread(new Runnable() { @Override public void run() { if (temp > 30 || temp > maxtemp) { showAlertDialog("警告", "当前温度过高!"); ivCurAlarm.setImageResource(R.drawable.red_point); initViarbtor(MainActivity.this); } else { ivCurAlarm.setImageResource(R.drawable.white_point); } } }); 如何只显示最新弹窗,而不会重叠
时间: 2024-02-10 13:27:54 浏览: 61
要解决重叠弹窗问题,你可以使用一个标记来判断当前是否已经有弹窗显示。在你的代码中,可以添加一个布尔变量来表示弹窗状态,比如命名为`isAlertDialogShowing`。
首先,在你的类中定义该变量:
```java
private boolean isAlertDialogShowing = false;
```
然后,在显示弹窗之前,先检查该变量的状态:
```java
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isAlertDialogShowing && (temp > 30 || temp > maxtemp)) {
isAlertDialogShowing = true;
showAlertDialog("警告", "当前温度过高!");
ivCurAlarm.setImageResource(R.drawable.red_point);
initViarbtor(MainActivity.this);
} else {
ivCurAlarm.setImageResource(R.drawable.white_point);
}
}
});
```
在弹窗关闭后,将`isAlertDialogShowing`重新设置为`false`,以便下次需要显示弹窗时可以正常触发:
```java
// 在适当的地方(比如点击确定按钮或者关闭弹窗的回调中)将 isAlertDialogShowing 设置为 false
isAlertDialogShowing = false;
```
这样,只有在没有弹窗显示且满足条件时,才会触发显示新的弹窗,避免了重叠弹窗的问题。
阅读全文