java.lang.IllegalArgumentException:结果为null或长度<1

时间:2018-09-03 10:08:00

标签: java android

    btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Location.distanceBetween(lat1,lat2,
                    lon1,lon2, result);
            float[] result = {};
            textResult.setText("Ergebnis: " + result);
        }

我目前正在尝试使Location.distanceBetween工作。我收到错误消息

  

java.lang.IllegalArgumentException:结果为null或长度为<1

有什么建议吗?谢谢

3 个答案:

答案 0 :(得分:1)

代码顺序错误。

    float[] result = new float[1]; //need declare result array firstly
    Location.distanceBetween(latLon1.getLatitude(), latLon1.getLongitude(),
            latLon2.getLatitude(), latLon2.getLongitude(), result); //then get result
    textResult.setText("Ergebnis: " + String.valueOf(result[0]));//use result value

答案 1 :(得分:1)

像这样重构代码-

btnCalculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            float[] result = {};
            Location.distanceBetween(lat1, lat2,
                    lon1, lon2, result);
            textResult.setText("Ergebnis: " + result);
        }
    }

根据Location.distanceBetween()的文档,

  

计算两个位置之间的近似距离(以米为单位),还可以计算两个位置之间最短路径的初始和最终方位。距离和方位是使用WGS84椭球定义的。计算出的距离存储在结果[0]中。如果结果的长度为2或更大,则初始方位将存储在results [1]中。如果结果的长度为3或更大,则最终方位角将存储在results [2]中。

答案 2 :(得分:1)

您需要在Location.distanceBetween(...)之前声明数组结果。并且您还需要给数组一个空格,如下所示:

float[] result = new float[1];

        Location.distanceBetween(10,10,5,5, result);

        textResult.setText("Ergebnis: " + result[0]);

此代码应该有效。