Android:如何给EditText框添加验证?

3
我需要给我的EditText框添加验证,使其满足以下要求: - 只能输入数字 - 不能留空(即不能只按回车键)
如果出现上述任何情况,我希望应用程序拒绝接受输入,并允许用户尝试重新输入。
我该如何做到这一点?
相关活动代码:
 answer = (EditText) findViewById(R.id.etEnterAnswerRandomTest);

     //when submit button is clicked
       public void onClick(View v) {

         switch(v.getId()) {

         case R.id.btnSubmitRandomTest:
            // sets string equal to what is entered in editText
            final String entry = answer.getText().toString();
            // convert from string value to int
            int a = Integer.parseInt(entry); 

编辑框的XML:

<EditText
        android:id="@+id/etEnterAnswerRandomTest"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Enter Answer..." >
    </EditText>
4个回答

2

这应该会对你有所帮助。我创建了一个文本监视器和简单的inputValidation方法,它返回一个布尔值,指示可编辑区域是否为空。如果编辑框为空,则显示验证标签。

TextView input_validation;
EditText input;
int final_input_value;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setupViews();
}

public void setupViews() {
    input_validation = (TextView) findViewById(R.id.input_validation);
    input_validation.setVisibility(View.GONE);
    input = (EditText) findViewById(R.id.input);
    input.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
        }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
        }
        @Override
        public void afterTextChanged(Editable editable) {
            if (inputValidation(editable)) {
                input_validation.setVisibility(View.VISIBLE);
                input_validation.setText("You must enter your Age");
            } else {
                input_validation.setVisibility(View.GONE);
                final_input_value = Integer.parseInt(editable.toString());
            }
        }
    });
}
public boolean inputValidation(Editable inputText) {
    return inputText.toString().isEmpty();
}

布局

  <TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/input_label"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Your Age"
    android:textStyle="bold"
    android:textColor="@android:color/holo_blue_dark"
    android:paddingBottom="16dp" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/input"
    android:inputType="number"
    android:layout_below="@+id/input_label"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/input_validation"
    android:textStyle="italic"
    android:textColor="@android:color/holo_red_dark"
    android:layout_below="@+id/input"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

输出的结果看起来像这样。

enter image description here


1
这可能/可能不是你要找的答案,但对我有效。
1. 将TextWatcher添加到你的EditText中。 2. 在你的EditText xml中添加android:inputType="number"如何使用TextWatcher 希望能帮到你 :)

1

如果要在EditText中仅输入数字,请使用以下代码:

android:inputType="0123456789"

onCreate 中使用以下代码:

edittext.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(editText.getText().toString.length()<1){
        // Display toast 
        Toast.makeText(getApplicationContext(), "Please enter something !",Toast.LENGTH_LONG).show();
      }
    }

 });

0

如果只需要数字,请在XML中使用以下内容

android:inputType="number"

为了获取非空输入,请在按钮的onClickListner内执行以下操作:

if(editText.getText().toString.length()<1){
//do something saying nothing is entered. Display toast may be
}

使用代码,你可以做到

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

谢谢,有没有办法确保如果editText字段为空,则无法单击“提交”按钮? - codeme2020
哎?那就什么都不做。即在onclicklistener内检查是否为空。如果为空,则不执行任何操作,否则执行您想要的操作。 - Nabin
谢谢,我明白你的意思了! :) - codeme2020

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接