Android:向 EditText 框添加验证?

标签 android validation android-edittext

我需要将验证添加到我的 EditText 框中,以便:

-只能输入数字 -不能给出空答案(即不能只按回车键)

如果发生上述任何情况,我只希望应用程序不接受条目并允许用户尝试重新输入有效条目。

我该怎么做?

相关 Activity 代码:

 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>

最佳答案

这应该能帮到你。我已经创建了一个 textwatcher 和简单的方法 inputValidation ,无论可编辑项是否为空,它都会返回一个 bool 值。如果显示验证标签时编辑文本为空。

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

关于Android:向 EditText 框添加验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214405/

相关文章:

android - 实现 onScrollListener 来检测 ListView 中滚动的结束

typescript - TypeScript 的运行时数据验证

c# - C# 中的本地化属性参数

java - Android 警报对话框无法找到 View

android - 在页脚中使用进度对话框

java - 在方向改变时查看相同的缩略图

asp.net-mvc - DropDownListFor 枚举不会绑定(bind)回模型

android - 如何使 android EditText 的高度小于默认值?

android - 编辑文本光标位置

Android比较字符串忽略大小写