我想在将数据添加到数据库之前检查用户提供的数据。
用户使用标准的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会解决问题吗?
任何帮助都表示赞赏,并提前致谢!
答案 0 :(得分:0)
您可以指定EditText仅允许数字输入。
<强>编程:强>
myEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
OR
在布局文件中
< EditText
android:id="@+id/my_edit_text"
android:inputType="number" />