我有2个编辑文本字段ETPredictKm(长值)和ETPredictFuelQty(双值)。如果我插入一个值,则在单击相应的EditText时将自动生成另一个值。我正在使用onFocusListener。我的问题是,当我插入km值来计算fuelQty时,它将得到正确的计算。但是,当我输入燃料数量并单击ETPredictKm时,我得到了无效的long:“”异常。
请给我您的建议。
谢谢。
这里有一些代码:
try
{
predictKm = Long.parseLong(ETPredictKm.getText().toString()); //Get the error here
predictFuelQty = Double.parseDouble(ETPredictFuelQty.getText().toString());
}
catch(NumberFormatException ne)
{
ne.printStackTrace();
}
if(isChkLastMileage1 ==true || isChkLastMileage5==true||isChkLastMileage10==true)
{
if(ETPredictKm.hasFocus())
{
if(predictFuelQty!=0)
{
//predictionMileage is double too
predictKm =(long) (predictionMileage*predictFuelQty);
ETPredictKm.setText(String.valueOf(predictKm));
}
}
else if(ETPredictFuelQty.hasFocus())
{
// This value is calculated properly
if(predictKm!=0)
{
predictFuelQty =predictKm/predictionMileage;
ETPredictFuelQty.setText(new DecimalFormat("##.##").format(predictFuelQty)+" Litres");
}
}
}
最佳答案
您可能需要在将空格转换为long / double之前先修剪掉空格
try
{
predictKm = Long.parseLong(ETPredictKm.getText().toString().trim()); //Get the error here
predictFuelQty = Double.parseDouble(ETPredictFuelQty.getText().toString().trim());
}
catch(NumberFormatException ne)
{
ne.printStackTrace();
}
并在强制转换数据类型转换之前对
ETPredictFuelQty.getText()
和ETPredictKm.getText()
进行空/空检查,如果在任何时候仅设置了一个字段,则另一个字段将为空/空,因此将引发异常