java - 在 Android 中验证 TextView

标签 java android validation textview

我正在制作一个提醒应用程序,用户需要从日期和时间选择器中设置日期和时间。所以我做了以下事情:

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);
}

我得到的是 TextView 上的错误符号 (!),但我得到的唯一 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 中的错误符号 (!)也是如此。

最佳答案

引用this question帮助解决了 TextView 上的设置错误。

至于另一部分,它用 message.length() 替换 time.length()

刚刚将我最有帮助的评论移至答案部分。

关于java - 在 Android 中验证 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263271/

相关文章:

java - Scanner.next() 和 System.in.read() 有什么区别?

java - JInternalFrame 自定义屏幕键盘

android - 从 InputConnection 获取 EditText 中所有文本的更好方法?

java - 如何让我的代码从食品店随机生成的数字中进行选择?

javascript - 如何使用 JavaScript 在 Firefox 中将必需的 radio 输入设为可选?

Javascript 验证 - 检查字符串是否是正确的对象

java - 泽西 jackson 禁用 filterprovider

java - 如何在cocos2d-android中找到 Sprite 是否与其他 Sprite 发生碰撞?

java - 来自validation.api的@Pattern想要在一个属性文件中配置所有模式

java - 通用方法失败