我有一个功能可以检查Array
中的电子邮件是否正确。如果电子邮件有效return true
并向服务器发送电子邮件。
电子邮件无效时出现问题。我将每封电子邮件都放在ArrayList
中,并在AlertDialog
中显示。但在AlerDialog
中,只显示了一封无效的电子邮件,因为return false
。
我试图移动这个回归,但一切都出错了。
我希望Array
与loop
结束,当loop
结束时,它应该return false
并显示ArrayList
(我认为这应该可以胜任),但是当我在return false
之后移动loop
时,AlertDialog
无法正常工作
这是我的功能
boolean checkedMails(String[] mails) {
for (int i = 0; i < mails.length; i++) {
if (!isEmailValid(mails[i])) {
wrongEmails.add(mails[i]);
Log.d("WRONGEMAILS", wrongEmails.toString());
return false;
}
}
return true;
}
在这里我发送电子邮件或显示alerDialog
sendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String IRegEmail = waitingForAdd.getText().toString();
String[] mails = getAnswers();
try {
if (checkedMails(mails)) {
sendEmails(mails);
} else {
alertDialogThis = new AlertDialog.Builder(
ReferFriend.this);
timer = new Timer();
alertDialogThis.setMessage("Wrong emails are:"
+ wrongEmails);
dlg = alertDialogThis.create();
dlg.show();
// dialog.dismiss();
timer.schedule(new TimerTask() {
public void run() {
dlg.dismiss();
timer.cancel();
}
}, 2000);
wrongEmails.clear();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"Please add e-mails", Toast.LENGTH_LONG).show();
}
}
});
}
答案 0 :(得分:4)
仅显示1封电子邮件,因为在第一封无效电子邮件之后,该函数返回。我认为这应该有所帮助,如果整个集合有效/无效,请添加一个额外的标记来跟踪。
boolean checkedMails(String[] mails) {
boolean isValid = true;
for (int i = 0; i < mails.length; i++) {
if (!isEmailValid(mails[i])) {
wrongEmails.add(mails[i]);
Log.d("WRONGEMAILS", wrongEmails.toString());
isValid = false;
}
}
return isValid;
}
答案 1 :(得分:1)
你可以在循环之前设置一个布尔变量,并在检查完成后返回它。
boolean checkedMails(String[] mails) {
boolean isGood = true;
for (int i = 0; i < mails.length; i++) {
if (!isEmailValid(mails[i])) {
wrongEmails.add(mails[i]);
Log.d("WRONGEMAILS", wrongEmails.toString());
isGood = false;
}
}
return isGood;
}