1

EditTextに値を入力するアプリのユーザーを制限したい。値は次のようになります:3/54/32

最初の番号:0..13中間の番号:0..7最後の番号:0..255

スラッシュはEditTextで修正されて表示されるはずです!

私はすでにIPアドレス用のInputFilterを持っていますが、それを理解していません... ;-)

 //Use a input filter for the input of the IP address
            InputFilter[] filters = new InputFilter[1];
            filters[0] = new InputFilter() {
                    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                        if (end > start) {
                            String destTxt = dest.toString();
                            String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend);
                            if (!resultingTxt.matches ("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { 
                                return "";
                            } else {
                                String[] splits = resultingTxt.split("\\.");
                                for (int i=0; i<splits.length; i++) {
                                    if (Integer.valueOf(splits[i]) > 255) {
                                        return "";
                                    }
                                }
                            }
                        }
                 return null;
                 }
            };                  
            et_router_ip.setFilters(filters);

誰かが私を助けてくれるなら素晴らしいでしょう!

4

1 に答える 1

2

Edit Text を 3 つの異なる入力ビューで分割すると、バッターになります。

そのために、最小入力値、最大入力値、および Edit Text Obj Like を渡す必要がある一般的な関数を準備します。

public void Edit_Validation(int MinLen, int MaxLen, EditText edt)
  throws NumberFormatException {
if (edt.getText().toString().length() <= 0) {
  edt.setError("Required.");
  data = null;
} else if (Double.valueOf(edt.getText().toString()) < MinLen
    || Double.valueOf(edt.getText().toString()) > MaxLen) {
  edt.setError("Out of Range " + MinLen + " or " + MaxLen);
  data = null;
} else {
  data = edt.getText().toString();
} } // END OF Edittext validation

ユーザーが を使用してテキストの編集に入力すると、現在の値を確認できるようになりましたTextWatcher

// EditText Validateion
Your_First_EditText.addTextChangedListener(new TextWatcher() {
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) {

  }

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count, int after) {

  }

  @Override
  public void afterTextChanged(Editable s) {
    try {

      Edit_Validation(0,13, Your_First_EditText);


    } catch (Exception e) {
      Log.e("Invalid Value", "Negative Value");
    }

  }
});

同じ方法で、次の 2 つの Edit Text Watcher で Edit_Validation(...) を呼び出すことができます。

簡単で時間もかからないと思います。私はアプリケーションの 1 つでもこの同じアプローチを使用しています。

正確な答えが得られたら、私と共有してください。

于 2012-10-31T10:43:40.163 に答える