我有一个向客户端发送数据的 UDP 服务器。数据的显示(在客户端)是使用对话框。问题是如果我多次发送相同的数据,就会有多个具有相同值的对话框。我想删除其他对话框以保留具有唯一值的对话框。
问问题
268 次
2 回答
1
if(dialog != null && dialog.isShowing())
{
return;
}
当任务完成时使用dialog.dismiss();
于 2013-08-06T06:21:57.207 回答
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?
}
}
于 2013-08-06T06:53:59.707 回答