0

編集テキストを使用してアラートダイアログを作成しています。ユーザーがメールアドレスを入力するまで画面に表示されたままにしておきたいです。どうやってやるの??私のコードは以下の通りです:

final AlertDialog.Builder alert= new AlertDialog.Builder(this);
    alert.setMessage("Enter Email:");
    final EditText userid = new EditText(this);
    alert.setView(userid);
    userid.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            if (userid.getText().toString().length()>0){
                userId = userid.getText().toString();               
                result();
            }else{

                Toast.makeText(getApplicationContext(), "Enter your email for future reference.", Toast.LENGTH_SHORT).show();
            }
        }
    });
    alert.show();

いずれかのボタンをクリックすると、ダイアログが閉じます。必要になるまで画面にダイログを保持する方法を教えてください。よろしくお願いします...

4

4 に答える 4

1

これを試して、

final AlertDialog.Builder alert= new AlertDialog.Builder(this);
    alert.setMessage("Enter Email:");
    final EditText userid = new EditText(this);
    alert.setView(userid);
    alert.setCancelable(false);
    userid.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            if (userid.getText().toString().length()>0){
                userId = userid.getText().toString();               
                result();
                dialog.dismiss();
            }else{

                Toast.makeText(getApplicationContext(), "Enter your email for future reference.", Toast.LENGTH_SHORT).show();
            }
        }
    });
    alert.show();
于 2012-07-04T10:42:37.080 に答える
1

このようなことをして...

boolean flagEmail = false;
Pattern pattern = Pattern.compile(EMAIL_PATTERN);
            if (validate(email.getText().toString().trim())) 
            {
                flagEmail = true;
            }

validate の関数を呼び出す

public boolean validate(String emailId) {
    matcher = pattern.matcher(emailId);
    return matcher.matches();
}

条件で、flagEmail = true;ダイアログ ボタンをキャンセルする場合は、Toast メッセージを取得します。

于 2012-07-04T10:44:00.920 に答える
1

ダイアログがキャンセルできないように設定するだけです。

alert.setCancelable(false);

次に、ユーザーがデータを入力せずに [OK] ボタンを押すと、次のことができます。

alert.setOnDismissListener(new DialogInterface.OnDismissListener() { 
    public void onDismiss( DialogInterface dialog) { 
        //If userid get text not greater than 0
        //then reshow the alertdialog with alert.show();
    }
});
于 2012-07-04T10:44:13.260 に答える
1

alert.setCancelable(false);と使用TextUtils.isBlank(email)

String email  = userid.getText().toString().trim();

if(!(TextUtils.isBlank(email))){//check here

}else{
        Toast.makeText(getApplicationContext(), "Enter your email for future reference.",                    
        Toast.LENGTH_SHORT).show();
        }
于 2012-07-04T10:47:07.923 に答える