[英]Popup Error on blank EditText
我如何要求用户将数据输入到EditText
, EditText
在填充EditText
之前不允许应用程序继续运行?
现在,即使用户确认错误消息指出EditText
为空并且是必需的,我的应用程序仍继续运行。
private final static int EMPTY_TEXT_ALERT = 0;
protected Dialog onCreateDialog(int id) {
switch(id) {
case EMPTY_TEXT_ALERT: {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("oops!!")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return builder.create();
}
}
return null;
}
public void sends(View v) {
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
int year = datePicker.getYear();
int month = datePicker.getMonth();
int day = datePicker.getDayOfMonth();
final EditText phone = (EditText) findViewById(R.id.editText2);
final EditText nameplate = (EditText) findViewById(R.id.editText3);
final EditText issue = (EditText) findViewById(R.id.editText4);
String ph = phone.getText().toString();
if(ph.trim().equals("")) {
// text is empty
showDialog(EMPTY_TEXT_ALERT);
}
String np = nameplate.getText().toString();
if(np.trim().equals("")) {
// text is empty
showDialog(EMPTY_TEXT_ALERT);
}
String i = issue.getText().toString();
if(i.trim().equals("")) {
// text is empty
showDialog(EMPTY_TEXT_ALERT);
}
else
{StringBuilder s= new StringBuilder(100);
s.append(year);
s.append(". ");
s.append(month+1);// month starts from 0 in this
s.append(". ");
s.append(day);
s.append(". ");
s.append(". ");
s.append(ph);
s.append(". ");
s.append(np);
s.append(". ");
s.append(i);
String st=s.toString();
Intent emailIntentt = new Intent(android.content.Intent.ACTION_SEND);
emailIntentt.setType("plain/text");
String aEmailList[] = { "shreyas.t@gmail.com" };
emailIntentt.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
emailIntentt.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback");
emailIntentt.putExtra(android.content.Intent.EXTRA_TEXT, st);
startActivity(emailIntentt);
}
}}
Shreyas Tallani
如何验证电话号码...输入超过10位数字,应显示错误消息
如果您只是想测试String
的长度,只需获取String
并将其长度与最大长度10相比较即可。
在您的validate(...)
方法中执行以下操作:
String ph = phone.getText().toString();
if(ph.trim().equals("")) {
showDialog(EMPTY_TEXT_ALERT);
} else if (ph.length() > 10) {
showDialog(TEXT_TOO_LONG_ALERT);
}
您还可以使您的EditText
仅允许数字值。 这将帮助您验证数字。 您可以在xml文件或代码中执行此操作。
XML文件
android:inputType="TYPE_NUMBER_VARIATION_NORMAL"
码
EditText.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);
你可以做的第一件事,就是添加一个validate(...)
方法。 在validate(...)
内部,您需要验证所有字段,如果什么都留为空白,则显示错误消息并停止应用进度。
如果所有字段都正确,则调用您的send方法。 和send(...)
应只发送数据,不检查验证。
如下所示,您可以在显示对话框后添加return语句。
if(i.trim().equals("")) {
// text is empty
showDialog(EMPTY_TEXT_ALERT);
return;
}
不过,使用Toast消息比使用showDialog更好。
我不知道您如何调用sends()方法,但是在出现任何空错误之后,您只需在showDialog()之后立即添加return语句即可。 这意味着,以某种方式发送()方法通过用户界面得到重新调用用户已经建立了文本之后。
如果通过onClick()从按钮调用了send()方法,则意味着用户将看到带有错误的对话框,输入一些文本,然后单击按钮以再次发送。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.