【发布时间】:2016-11-10 19:44:50
【问题描述】:
我正在制作一个提醒应用程序,用户需要从日期和时间选择器中设置日期和时间。所以我做了以下事情:
private TextView mDateDisplay;
private TextView mTimeDisplay;
...
// Set reminder button
setButton = (Button) findViewById(R.id.set_reminder_button);
setButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!validate()) {
onSetDateTimeFailed();
return;
}
// creating new product in background thread
db.addReminder(id, mEditMessageText.getText().toString(), mDateDisplay.getText().toString(), mTimeDisplay.getText().toString());
finish();
}
});
...
// Validation
public boolean validate() {
boolean valid = true;
String date = mDateDisplay.getText().toString();
String time = mTimeDisplay.getText().toString();
if (date.isEmpty() ) {
mDateDisplay.setError("Set date");
valid = false;
} else {
mDateDisplay.setError(null);
}
if (time.isEmpty()) {
mTimeDisplay.setError("Set time");
valid = false;
} else {
mTimeDisplay.setError(null);
}
return valid;
}
public void onSetDateTimeFailed() {
Toast.makeText(getBaseContext(), "Setting date and time failed", Toast.LENGTH_LONG).show();
setButton.setEnabled(true);
}
我得到的是 textviews (!) 上的错误符号,但我得到的唯一 toast 消息是 “设置日期和时间失败”,而不是 “设置日期” 或 “设置时间”。
我想做的另一件事是在日期和时间中添加一条提醒消息:
private EditText mEditMessageText;
...
// Validation
public boolean validate() {
boolean valid = true;
String message = mEditMessageText.getText().toString();
if (message.isEmpty() || time.length() < 1 || time.length() > 140) {
mEditMessageText.setError("Enter between 1 and 140 characters");
valid = false;
} else {
mEditMessageText.setError(null);
}
但现在,当任何经过验证的字段出现错误时,我也会收到 “输入 1 到 140 个字符” 消息。例如,如果我在 editText 字段中输入了所需的字母数量并且没有选择日期或时间,我会收到此错误消息 “输入介于 1 到 140 个字符之间” 以及 editText 中的错误符号 (!)也是。
【问题讨论】:
-
你能尝试在验证中捕获异常吗?可能是您看不到的错误
-
尝试使用 if variable.equals("") 而不是 isEmpty()
-
@Html Tosin 试过了,但我得到了相同的结果。不显示“设置日期”或“设置时间”的 Toast 消息,并且如果任何 TextView 字段为空,则始终显示“输入 1 到 140 个字符”,即使消息字段本身不为空且符合条件。
-
我想我发现了一个非常相似的问题here 看看它是否有效。在 textview 上设置 Error 有点不同。
-
@Vucko 今晚会试试这个。看起来很有希望:) TY
标签: java android validation textview