0

我有一个向客户端发送数据的 UDP 服务器。数据的显示(在客户端)是使用对话框。问题是如果我多次发送相同的数据,就会有多个具有相同值的对话框。我想删除其他对话框以保留具有唯一值的对话框。

4

2 回答 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 回答