【问题标题】:Android : Alert Dialog validation proper way [duplicate]Android:警报对话框验证正确方法[重复]
【发布时间】:2013-02-12 06:56:00
【问题描述】:

我们可以通过添加一个带有实现的肯定按钮来执行验证

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

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

如果我们输入错误的 URL,AlertDialog 是否仍然存在?

【问题讨论】:

    标签: android


    【解决方案1】:

    我们可以使用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,但它现在已被弃用。

    【讨论】:

    • 干得好..上帝保佑
    【解决方案2】:

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

    isHttpUrl();
    isValidUrl();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多