Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击“确定”按钮时停止AlertDialog关闭_Android - Fatal编程技术网

Android 单击“确定”按钮时停止AlertDialog关闭

Android 单击“确定”按钮时停止AlertDialog关闭,android,Android,我正在尝试设置一个自定义AlertDialog,它有两个按钮,取消和一个肯定按钮。我需要这样做,使积极的按钮被点击,我可以改变文本,而不是有对话框关闭 粗略的流程是,正面的按钮会说“发送”,点击后会变成“发送…”,然后代码会将一些数据发送到我们的服务器,如果响应为真,则关闭对话框,如果为假,或超时等显示错误消息(Toast),并保持对话框打开 我有向服务器发送数据、处理响应等的代码,我只是不知道如何编辑AlertDialog类来实现这一点。有人知道我会怎么做吗 当前测试代码: AlertDial

我正在尝试设置一个自定义AlertDialog,它有两个按钮,取消和一个肯定按钮。我需要这样做,使积极的按钮被点击,我可以改变文本,而不是有对话框关闭

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

有两种方法可以实现这一点

  • 使用android提供的
    dialog
    API使用自定义对话框
  • 对于
    AlertDialog
    ,您需要按照本节中的说明覆盖它

  • 您可以将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();
                }
            });
        }
    });
    

    首先查看您在警报对话框中指定了什么onclick@TomHart您必须在对话框中的某个位置使用
    dialog.discouse()
    dialog.cancel()
    code@TomHart更新的answerDialogInterface.getButton()不再存在。