2014-04-03 69 views
0

我想將位置值添加到雙精度數組中,但它給了我nullpointerexcetion。我請求位置更新,這樣將雙精度值添加到雙數組時出錯

if (buttonView.isChecked()) { 
         if (!manager 
           .isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
          mylocation = manager 
            .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
          location_checked = true; 
         } else { 
          manager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 5000, 0, 
            listener); 
          location_checked = true; 
         } 
        } 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
             5000,0, listener); 

然後,我設置的傳入位置值myLocation

LocationListener listener = new LocationListener() { 

    @Override 
    public void onLocationChanged(Location location) { 
     mylocation = location; 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

}; 

之後,我嘗試將值添加到雙數組,但它給我的錯誤和崩潰我在這一點上的應用程序

double[] locationData = new double[] {mylocation.getLatitude(), 
             mylocation.getLongitude() }; 
+0

很顯然'mylocation'是'null'。你們沒有提供足夠的信息讓我們猜測它爲什麼沒有被設定。你確定'onLocationChanged'發生了嗎? – ajb

+0

在locationData被實例化之前,可能偵聽器沒有得到它的第一次更新? –

+0

是沒有聽衆沒有得到任何更新,我試圖發送數據 –

回答

0

你應該這樣說:

@Override 
    public void onLocationChanged(Location location) { 
    double lat = location.getLatitude(); 
    double lng = location.getLongitude(); 
    setlocationData(lat, lng); 
    } 

因爲直到位置從LocationChanged設置,它是空的。

直到LocationManager獲取de GPS信號需要時間。