我有这个代码:
EditText value = ( EditText )findViewById( R.id.editbox );
Integer int_value = Integer.valueOf( value.getText().toString() );
当 EditText 中有数字时效果很好,但是当它为空或有文本等时它会 FC 我的应用程序。
我怎样才能确保 int_value 有/是一个数字?我也尝试了 parseInt 但结果相同。
我有这个代码:
EditText value = ( EditText )findViewById( R.id.editbox );
Integer int_value = Integer.valueOf( value.getText().toString() );
当 EditText 中有数字时效果很好,但是当它为空或有文本等时它会 FC 我的应用程序。
我怎样才能确保 int_value 有/是一个数字?我也尝试了 parseInt 但结果相同。
在您的 xml 文件中添加android:inputType="number"
您的声明。EditText
try {
Integer int_value = Integer.parseInt(value.getText().toString());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当一个无法解析的字符串作为Integer
's 的输入时valueOf
,它会抛出一个NumberFormatException
. 简单地用一个块包围它try catch
来处理这种情况:
Integer int_value = null;
try {
int_value = Integer.valueOf(value.getText().toString());
} catch (NumberFormatException e) {
// here you can handle the case where the text wasn't an integer
}
// carry on...
在 xml 中设置 inputType="number" 并检查代码中的空值
if(!"".equals(value.getText().trim()) && value.getText().trim()!= null) {
//sure, input is not empty and is a number.
}
试试这个,
editText.setOnFocusChangeListener(new OnFocusChangeListener(){
@Override
public void onFocusChange(View v,boolean hasFocus)
{
//check for emptiness
if(editText.length()==0)
{
editText.setError(error_required);
}
else if(!numberValidation(editText.getText().toString()))
{
editText.setError("Only Numbers");
}
}
}
);
在 main.xml 添加,
EditText tag, android:numeric="integer/number/decimal"