阻止AlertDialog在点击确定按钮时关闭

5
我想设置一个自定义AlertDialog,其中有两个按钮,取消和确认按钮。当确认按钮被点击时,我需要改变文本并且不关闭对话框。
大致流程是:确认按钮会显示“发送”,当它被点击后,它将变成“正在发送...”,然后代码将向我们的服务器发送一些数据,如果响应为true,则关闭对话框,如果响应为false或超时等,则显示一个错误消息(Toast)并保持对话框打开状态。
我已经编写了发送数据到服务器、处理响应等代码,但我不知道如何编辑AlertDialog类来实现这一点。有人知道我该如何做吗?
当前的测试代码:
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setView(getActivity().getLayoutInflater().inflate(R.layout.dialog_single_text, null));
b.setTitle("Forgotten Password");
b.setMessage("Please enter your email");
b.setPositiveButton("Send", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(getActivity(), "Sending...", Toast.LENGTH_SHORT).show();
    }
});
b.create().show();

首先查看您在警告对话框单击事件中指定了什么。 - learner
2个回答

8
您可以向AlertDialog添加onShowListener。
 d.setOnShowListener(new DialogInterface.OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {

        Button b = d.getButton(AlertDialog.BUTTON_POSITIVE);
        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // TODO Do something

                //Dismiss once everything is OK.
                d.dismiss();
            }
        });
    }
});

4
DialogInterface.getButton() 不再存在。 - axd

0

有两种方法可以实现这个目标

  1. 使用 Android 提供的 Dialog API 来创建自定义对话框 LINK
  2. 对于 AlertDialog,您需要按照此 LINK 中所述进行覆盖。

@TomHart 你一定在代码中使用了 dialog.dismiss()dialog.cancel() - CodeWarrior
@TomHart 更新的答案 - CodeWarrior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接