Android:警报对话验证正确的方法

时间:2013-02-12 06:56:01

标签: android

我们可以通过添加带有实现的正面按钮来执行验证

final EditText urlEditText = new EditText(this);

DialogInterface.OnClickListener event = new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                try
                {
                    // Validate URL
                    new URL(urlEditText.getText().toString());
                    Toast.makeText(getBaseContext(), "URL Accepted", 1).show();
                }
                catch (MalformedURLException e) {
                    Toast.makeText(getBaseContext(), "Invalid URL", 1).show();
                }
            }
        };

AlertDialog dialog = new AlertDialog.Builder(this)
                    .setTitle("Enter the server URL here")
                    .setNegativeButton("Cancel", null)
                    .setPositiveButton("Ok",event)
                    .setView(urlEditText)
                    .create();
        dialog.show();

如果我们输入了错误的网址,系统会对其进行验证并显示错误的网址Toast。但是,对话框被取消,它应该仍然显示,直到用户按“取消”或输入正确的URL。这里有解决方案,比如重新创建对话框并再次将其显示给用户,但这是一个好主意。

有没有办法让我们输入错误的网址AlertDialog仍在那里?

2 个答案:

答案 0 :(得分:9)

我们可以使用AlertDialog.getButton(),因此我们可以获得AlertDialog的按钮引用。如果向用户显示对话框,则应调用此方法。

final EditText urlEditText = new EditText(this);


final AlertDialog dialog = new AlertDialog.Builder(this)
                    .setTitle("Enter the server URL here")
                    .setNegativeButton("Cancel", null)
                    .setPositiveButton("Ok",null)
                    .setView(urlEditText)
                    .create();
        dialog.setOnShowListener(new OnShowListener() {

            @Override
            public void onShow(DialogInterface arg0) {

                Button okButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
                okButton.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View arg0) {

                        try
                        {
                            new URL(urlEditText.getText().toString());
                            Toast.makeText(getBaseContext(), "URL Accepted", 1).show();
                            dialog.dismiss();
                        }
                        catch (MalformedURLException e) {
                            Toast.makeText(getBaseContext(), "Invalid URL", 1).show();
                        }
                    }
                });
            }
        });

更新1:我们可以使用AlertDialog.BUTTON1,但现已弃用。

答案 1 :(得分:1)

URLUtil提供了有用的方法,例如

isHttpUrl();
isValidUrl();

尝试使用其中一个来验证您在EditText中输入的网址。如果URL无效,请再次显示提醒或不dismiss对话。