我只有1个带有数字输入的edittext。问题是,假设用户输入1234 no no和afterwrds如果他想要更改它,那么当他按下del键时间时他会在2时按下并按下一个更多的时间del键,应用程序崩溃。我尝试处理如果edittext文本长度0情况下,但stil不wrkng 这是我的代码
input.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start,
int before, int count)
{
final String in= input.getText().toString();//input is edittext
final int j=in.length();
Cursor ansof1=(Cursor) mSpinner.getSelectedItem();//1st spinner tks 1 value
String temp=ansof1.getString(1);
Cursor ansof2=(Cursor)mSpinner2.getSelectedItem();//for 2 spinner
String temp2=ansof2.getString(1);
Cursor cn = myDbHelper.selectcur(temp);
double ans1=cn.getDouble(3);
Cursor cm=myDbHelper.selectcur(temp2);
double ans2=cm.getDouble(3);
no = Integer.parseInt(in);
final double finalans=((ans1/ans2)*no);
NumberFormat formatter = new DecimalFormat("##,##,###");
if(temp.equalsIgnoreCase(temp2))
{
//dlgAlert.setMessage("OOpss..!! Both Currencies Are Same...!!");
text1.setText(no+" "+temp+" "+"="+" "+no+" "+temp2);
//dlgAlert.create().show();
}
else
text1.setText(no+" "+temp+" "+"="+" "+formatter.format(finalans)+" "+temp2);
}
@Override
public void afterTextChanged(Editable arg0)
{
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
{
// TODO Auto-generated method stub
}
});
答案 0 :(得分:2)
这是因为您尝试将空字符串转换为数字。所以检查这样的字符串长度,
input.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start,
int before, int count)
{
if(s.length()==0)
{
return;
}
else
{
// your code here
}
}