停止AlertDialog关闭正按钮单击

时间:2014-06-16 12:46:35

标签: android

我尝试设置自定义AlertDialog,它有2个按钮,取消和正按钮。我需要点击正面按钮,我可以更改文本,而不是关闭对话框。

粗略的流程是正面按钮会说"发送",当它点击它会改变为"正在发送..."然后代码会发送一些数据到我们的服务器,如果响应为真,关闭对话框,如果它是假的,或超时等显示错误消息(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();

2 个答案:

答案 0 :(得分:7)

您可以将onShowListener添加到AlertDialog

 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();
            }
        });
    }
});

答案 1 :(得分:0)

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

  1. 使用android LINK
  2. 提供的Dialog API使用自定义对话框
  3. 对于AlertDialog,您需要按照LINK
  4. 中的说明覆盖它