我有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()进行空/空检查,如果在任何时候仅设置了一个字段,则另一个字段将为空/空,因此将引发异常

10-01 02:01