2017-08-18 4 views
0

私は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); 
} 

:パラメータlatitudeFromlongtitudeFromが両方設定されている

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つのスクリーンショットです。パラメーターがすべて設定されていることがわかります。 Fragment screenshot

これはあなただけlatitudeFromlongtitudeFromが設定されていることがわかります静的メソッドdistanceInMetersFromToです。

static method screenshot

答えて

1

あなたがparseDouble(l.latitude)代わりのDouble.valueOf(l.latitude)を使用してみましたか?後者はDoubleオブジェクトを返しますが、前者は割り当て済みの変数のデータ型であるdoubleを返します。Autounboxingはそれを処理しているはずですが、試してみる価値があります。

+0

私はそれが 'parseDouble(String)'を使う方が良いと思いますので変更しましたが、解決しませんでした。 – Ravenix

関連する問題