1

現在の緯度と経度を返す別のクラス GPSTracker.java があります。

public class Live extends Activity implements LocationListener
{   
GPSTracker gps;
Location newLocation = new Location(LocationManager.GPS_PROVIDER);
Location oldLocation = new Location(LocationManager.GPS_PROVIDER);
float distanceTravelled=0;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_live);
    startactivity();

}

開始アクティビティ:

public void startactivity() 
{
    gps = new GPSTracker(Live.this);

    if(gps.canGetLocation())
    {
        double latitude = gps.getLatitude();
        double longitude = gps.getLongitude();
        Toast.makeText(getApplicationContext(), "Your Location is: \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();


        newLocation.setLatitude(latitude);
        newLocation.setLongitude(longitude);    
    }
    else
    {
        gps.showSettingsAlert();
    }

}

コメントアウトされた部分を実行するたびに、Live クラスの startactivity() の外側で場所を宣言しても例外が発生します。それ以外の場合は、正しい緯度と経度が表示されます。

次のように、移動距離を計算するために使用したいと思います。

    @Override
public void onLocationChanged(Location location) 
{

    oldLocation.set(newLocation);
    startactivity();
    distanceTravelled+=newLocation.distanceTo(oldLocation);
    String stringdistance= Float.toString(distanceTravelled);
    TextView distance = (TextView) findViewById(R.id.textDistance);
    distance.setText(stringdistance);
}

そのロジックは正しいですか?

そして、onLocationChanged() は startactivity() で newLocation を見つけません。どうやってやるの?

しかし、最初に、startactivity() で場所を使用すると例外が発生します。

4

2 に答える 2

1

経度と緯度を非オブジェクトに設定しようとしています。これにより、NullPointerException が作成されます。使用する前にオブジェクトの場所を作成する必要があります。

于 2013-07-10T07:24:55.203 に答える