android:inputType="numberDecimal|numberSigned"
的EditText。在Java代码中我有这个
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
int value = 0;
String editContent = editText.getText().toString();
if(editContent != null && editContent.length() > 0) {
value = Integer.parseInt(editContent);
}
seekBar.setProgress(value);
}
当我尝试插入负数时,我有一个NumberFormatException无效的int“ - ”。我该如何解决这个问题?
答案 0 :(得分:0)
在EditText的布局中添加:
android:digits="0123456789-."
答案 1 :(得分:0)
第一次放入" - "时,将调用方法onTextChanged
,解析将在" - "上完成,即不是有效的int。
因此,如果字符串是" - "。
将以下代码用于onTextChanged(...)
。 最好将此代码移至afterTextChanged(...)
int value = 0;
if (! TextUtils.isEmpty(arg0)) {
String text = arg0.toString();
if ("-".equals(text)) {
// Nothing to do
} else {
value = Integer.parseInt(text);
}
seekBar.setProgress(value);
}
答案 2 :(得分:0)
试试这个
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
int value = 0;
String editContent = editText.getText().toString();
if(editContent != null && editContent.length() > 0 && !editContent.equals("-")) {
value = Integer.parseInt(editContent);
}
seekBar.setProgress(value);
}
在输入每个字符后调用onTextChanged时,尝试解析" - "字符作为整数,导致异常。使用修改后的代码,您将在这些情况下将值设置为0.
答案 3 :(得分:0)
这是因为无法从"-"
字符串解析整数。
您可以添加try-catch
块:
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
try{
int value = 0;
String editContent = editText.getText().toString();
if(editContent != null && editContent.length() > 0) {
value = Integer.parseInt(editContent);
}
seekBar.setProgress(value);
}catch(NumberFormatException ex){
}
}
或使用if
构造:
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
int value = 0;
String editContent = editText.getText().toString();
if(editContent != null && !editContent.equals("-")){
if(editContent != null && editContent.length() > 0) {
value = Integer.parseInt(editContent);
}
seekBar.setProgress(value);
}
}
答案 4 :(得分:0)
添加一项检查以查看editContent是否以 -
开头@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
int value = 0;
String editContent = editText.getText().toString();
if(editContent != null && editContent.length() > 0 && !editContent.startsWith("-"))
{
value = Integer.parseInt(editContent);
}
seekBar.setProgress(value);
}