私はAndroidアプリケーションを開発していますが、これはJava固有のものかもしれません。メソッドから消えているパラメータ
フラグメントから、私は静的メソッドを呼び出します。フラグメントでは、静的メソッドのすべてのパラメータを設定しました。私はアプリをデバッグするときにパラメータはすべて設定されていますが、静的メソッドになるとパラメータが設定されません。
これは、フラグメント(それはGPSTracker.distanceInMetersFromTo
の呼び出しで起こっている)からの方法である:これは静的メソッドである
public void updateDistance(Location location) {
latitude = location.getLatitude();
longtitude = location.getLongitude();
List<ListInspectieItem> newList = new ArrayList<ListInspectieItem>();
List<ListInspectieItem> oldList = adapter.getValues();
for (ListInspectieItem l : oldList) {
double latitudeFrom = latitude;
double longtitudeFrom = longtitude;
double latitudeTo = Double.valueOf(l.latitude);
double longtitudeTo = Double.valueOf(l.longtitude);
double afst = GPSTracker.distanceInMetersFromTo(
latitudeFrom,
longtitudeFrom,
latitudeTo,
longtitudeTo
);
newList.add(new ListInspectieItem(
l.inspectieSoort,
l.opdrachtIdentificatie,
l.bronsysteem,
l.latitude,
l.longtitude,
round(afst, 2)
));
}
...
adapter.changeList(newList);
}
:パラメータlatitudeFrom
とlongtitudeFrom
が両方設定されている
public static double distanceInMetersFromTo(double latitudeFrom, double longtitudeFrom, double latitudeTo, double longtitudeTo){
double R = 6371e3; // metres
double phi1 = doubleToRadian(latitudeFrom);
double phi2 = doubleToRadian(latitudeTo);
double deltaphi = doubleToRadian(latitudeFrom-latitudeTo);
double deltadelta = doubleToRadian(longtitudeFrom-longtitudeTo);
double a = Math.sin(deltadelta/2) * Math.sin(deltaphi/2) +
Math.cos(phi1) * Math.cos(phi2) *
Math.sin(deltadelta/2) * Math.sin(deltadelta/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return R * c;
}
が、 latitudeTo
とlongtitudeToは両方とも設定されていません。
私がこのメソッドを呼び出すと、すべての変数に値があります。私は何が間違っているのか分からず、わからないJavaの魔法かもしれない。
更新:
フラグメントから静的メソッドの呼び出し:
もう少しここでそれを明確にするためには、デバッグ中に2つのスクリーンショットです。パラメーターがすべて設定されていることがわかります。
これはあなただけlatitudeFrom
とlongtitudeFrom
が設定されていることがわかります静的メソッドdistanceInMetersFromTo
です。
私はそれが 'parseDouble(String)'を使う方が良いと思いますので変更しましたが、解決しませんでした。 – Ravenix