您好我正在尝试执行只接受浮点数或整数的EditText。我这样做但不能正常工作:
myedit=(EditText)findViewById(R.id.my_edit);
myedit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
我也是这样写的:
if(!myedit.getText().toString().matches("[a-zA-Z? ]*"){
//do something
}
else{
//no correct values
}
有人能帮助我吗?
答案 0 :(得分:0)
您必须将输入过滤器设置为编辑文本...
et.setFilters(new InputFilter[] {
new DigitsKeyListener(Boolean.FALSE, Boolean.TRUE) {
int beforeDecimal = 5, afterDecimal = 2;
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
String temp = et.getText() + source.toString();
if (temp.equals(".")) {
return "0.";
}
else if (temp.toString().indexOf(".") == -1) {
// no decimal point placed yet
if (temp.length() > beforeDecimal) {
return "";
}
} else {
temp = temp.substring(temp.indexOf(".") + 1);
if (temp.length() > afterDecimal) {
return "";
}
}
return super.filter(source, start, end, dest, dstart, dend);
}
}
});
答案 1 :(得分:0)
请你试试
您的xml文件中的 android:input = "number"
。
这会将您的编辑文本设置为仅将数字作为输入
答案 2 :(得分:0)
最简单的方法是将digits
属性设置为仅接受有效的整数和小数值:
android:digits="0123456789."
虽然你可能仍然应该在NumberFormatException
的try / catch中包装转换,以防万一有一些边缘输入的情况我不知道。
答案 3 :(得分:0)
抱歉这已经很晚了,但可能会帮助其他人坚持这一点。
我发现完成此操作的最简单方法是设置android:input值,如下所示:
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned" />
这个^^^组合只允许用户输入整数或浮点数!
然后,如果你想解析这个值,你可能想尝试这样的事情:
String numberAsString = "22.13";
try {
int number = Integer.parseInt(numberAsString);
} catch (NumberFormatException e) {
try {
float number = Float.parseFloat(numberAsString);
} catch (NumberFormatException ex) {
Log.e(TAG, "Not float value", e);
Log.e(TAG, "Not integer value", ex);
}
}