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


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

我目前正在尝试让位置之间工作。我收到错误

java.lang.IllegalArgumentException: result 为 null 或长度<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

像这样重构你的代码 -

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 或更大,则初始方位角存储在结果 [1] 中。如果结果的长度为 3 或更大,则最终方位角存储在结果中[2]。

您需要在 Location.distanceBetween(...( 之前声明数组结果。您还需要像这样为数组提供一个空间:

float[] result = new float[1];
Location.distanceBetween(10,10,5,5, result);
textResult.setText("Ergebnis: " + result[0]);

此代码应该可以工作。

相关内容

最新更新