用户输入不应超过在android中的edittext中输入的特定数字

时间:2014-05-08 05:32:18

标签: android

我在android中开发一个赞美诗应用程序,有没有办法让用户知道他们输入的数字在数据库中找不到,因此他们输入赞美诗的赞美诗索引不能立即输入它在编辑文本中。

这是代码的一部分

android:ems="10"
android:inputType="number"
android:maxLength="3"`

2 个答案:

答案 0 :(得分:1)

如果您的值在[-99; 999]内,则限制EditText的长度可能有效。 无论如何,你应该阅读并验证号码。

  1. 的EditText。

    一个。如果您有一个按钮(用户输入赞美诗编号并单击按钮进行查找),请在onClick方法中添加如下内容:

    Editable e = yourEditText.getText();
    String hymnNumberInString = "";
    if (e != null) s = hymnNumberInString.toString();
    if (hymnNumber.isEmpty()) showEmptyAlert(); //show alert that string is empty;
    try {
        Integer hymnNumber = Integer.valueOf(s);
        if (!findHymn(hymnNumber)) {//here is a search
           showErrorMessage();
        }
    } catch (NumberFormatException e) {
        e.printStackTrace();
        showErrorMessage();
    }
    

    湾如果您没有按钮,可以添加TextWatcher并在超出赞美数时显示错误:

    yourEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {}
    
    @Override    
    public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
       }
    
    @Override    
    public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      if (s != null && s.length() != 0) {
        try {
           Integer hymnNumber = Integer.valueOf(s);
           if (findHymn(hymnNumber)) {
              //everything is ok, do what you want with it
               // BUT!!! Remember that user might entered only 1 and is still entering!
               // To ensure that user already entered (or maybe already entered) you can wait for 2 sec. 
    
               //E.g. by using someHandler.postDelayed(runnableWithThisCodeInside, 2000);    
           } else {
              showErrorMessage();
           }
        } catch (NumberFormatException e) {
           e.printStackTrace();
           showErrorMessage();
        }
      }
    }
    });
    

    ℃。您可以使用this nice library to simplify proccess of validation

  2. 对于预定义的数字集,您可以使用NumberPicker。该组件将String数组作为输入(通过setDisplayedValues()) - 因此您可以使用数据库中的数字/字符串填充它。它的可编辑(除非你限制它) - 所以你的用户仍然可以输入他想要的数字。

答案 1 :(得分:0)

有没有办法让用户知道他们输入的号码在数据库中找不到。

是的,你可以这样做,考虑到你使用EditText让用户输入数字,从下面获取文字

EditText mEdit   = (EditText)findViewById(R.id.edittext);
Integer number=Integer.valueOf(editText.getText.toString());

现在你有了一个数字,你可以在数据库表上运行查询以匹配相应的值,无论它是否存在于数据库中。这样的事情

    int count= SELECT count(*) FROM tbl_user
    WHERE name = ' + number + '

   if(count>0){
     Log.d("Count","Value exist in database");
   }