检查Android中的用户输入

时间:2014-03-14 20:46:15

标签: android

我想在将数据添加到数据库之前检查用户提供的数据。

用户使用标准的EditText字段输入输入,这些字段是动态创建的,并在数组列表中分组。

                EditText ExerciseEditText = this.ExerciseList.get(n); //get content from EditText at given index
                String exercise = ExerciseEditText.getText().toString();            

我对两种不同类型的输入使用相同的概念:

  • 文字数据

它们都是String类型,应该维护它们的类型。

通过使用这些字符串,我想确定用户输入的数据类型,并根据某些规则进行检查。

在“数字”字段中,只允许用户输入类似“123”的内容,但不能输入“asdf”。

为了实现这一点,我实现了一个尝试将字符串解析为int的方法。

private Boolean intCheck(String intString)
{
    try 
    { 
        int parsedString = Integer.parseInt(intString);
        return true;
    }
    catch (NumberFormatException e)
    { 
        String error = e.toString();
        Log.w("Fail", error); //debug
        return false;
    }   

}

每当输入无效时,它将抛出异常并返回false

EditText WeightEditText = this.WeightList.get(n);   
String weight = WeightEditText.getText().toString();    

                if (intCheck(weight) == false)
                {
                    while (intCheck(weight) == false)
                    {
                        requestNewVal("reps");
                        reps = MainActivity.NewUserInput;                           
                    }                       
                }

我的requestNewVal()方法应该提示用户输入新值(数字)并将值赋给字符串。然后它再次检查并且应该一直提示用户输入新数据,直到输入有效数字为止。

private void requestNewVal(String string)
{
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Error");
    alert.setMessage("Please enter "+string);

    final EditText input = new EditText(this);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int whichButton) 
        {
            String newVal = input.getText().toString();
            MainActivity.NewUserInput = newVal;
        }
    });

    alert.setCancelable(false);
    alert.show();       
}

MainActivity.NewUserInput是一个全局变量,它不是jet初始化的。

这是我的问题所在,程序根本没有提示用户,它只是为字符串分配一个空值,导致无限的异常行。 之后程序冻结了......

设置OnClickListener会解决问题吗?

任何帮助都表示赞赏,并提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以指定EditText仅允许数字输入。

<强>编程:

myEditText.setInputType(InputType.TYPE_CLASS_NUMBER);

OR

在布局文件中

< EditText
android:id="@+id/my_edit_text"
android:inputType="number" />

Source