3

実装で肯定的なボタンを追加することで検証を実行できます

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まだそこにある方法はありますか?

4

2 に答える 2

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が、現在は非推奨です。

于 2013-02-12T07:03:13.420 に答える
1

URLUtil次のような便利なメソッドを提供します

isHttpUrl();
isValidUrl();

それらのいずれかを使用して、 に入力した URL を検証してみてくださいEditText。が有効でない場合URLは、アラートをもう一度表示するか、dismissダイアログを表示しません。

于 2013-02-12T07:01:56.583 に答える