我有一个UDP服务器,可以将数据发送到客户端。数据的显示(在客户端)使用对话框。问题是如果我有多个相同数据的发送,将有多个具有相同值的对话框。我想删除其他对话框以保留具有唯一值的对话框。
答案 0 :(得分:1)
if(dialog != null && dialog.isShowing())
{
return;
}
当任务完成时使用 dialog.dismiss();
答案 1 :(得分:0)
如何根据您收到的数据的唯一标识符使用某种Set?标识符应与相同数据的多个“发送”相同。
private AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(Context.this);
private Set<Integer> mShownDialogs = new HashSet<Integer>();
public void onReceive(final MyData data) {
final Integer dataHash = data.getUniqueHash();
if (!mShownDialogs.contains(dataHash)) {
mShownDialogs.add(dataHash);
mDialogBuilder.setTitle(data.getTitle());
mDialogBuilder.setMessage(data.getMessage());
AlertDialog dialog = mDialogBuilder.create();
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
// If I want to show a dialog with the same dataHash some
// time in the future, I should remove from set.
mShownDialogs.remove(dataHash);
}
});
dialog.show();
} else {
// Discard the data?
}
}