2011-12-06 32 views
0

我有我的應用程序一個GPS的錯誤,當我試圖讓我的當前位置,通過GPS或通過網絡錯誤與GPS的Android

private static LocationManager lm; 
private static LocationListener locationListener; 
private static Location posicion; 
private double latitud; 
private double longitud; 

posicion = ObtenPosicion();  
     latitud = posicion.getLatitude(); 
     longitud= posicion.getLongitude(); 

     //Me centro en el mapa 
     final GeoPoint yo = new GeoPoint((int)(latitud),(int)(longitud)); 

public Location ObtenPosicion(){ 
    if (lm == null) 
     { 
      lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  

      locationListener = new LocListener(); 

      if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) 
      { 
       lm.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        LOCATION_UPDATE_TIME, 
        LOCATION_UPDATE_DISTANCE, 
        locationListener); 

       posicion = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      } 

      if (lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
      { 
         lm.requestLocationUpdates(
         LocationManager.NETWORK_PROVIDER, 
         LOCATION_UPDATE_TIME, 
         LOCATION_UPDATE_DISTANCE, 
         locationListener); 

       posicion = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      } 
     } 
     return posicion; 
    } 



private class LocListener implements LocationListener 
    { 
     @Override 
     public void onLocationChanged(Location loc) { 
      posicion.set(loc); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, 
      Bundle extras) { 
     } 


    } 

    public static Location getCurrentLocation() 
    { 
     return posicion; 
    } 

    public void stopLocationListening() 
    { 
     if (lm != null) 
      lm.removeUpdates(locationListener); 

    } 

的錯誤是在一條線上一個NullPointerException:

12-06 17:04:25.418: E/AndroidRuntime(4744): java.lang.NullPointerException 
12-06 17:04:25.418: E/AndroidRuntime(4744):  at com.rbrlnx.lugares.editarLugar$LocListener.onLocationChanged(editarLugar.java:215) 

我試着用不同的代碼,但它不可能..

+1

如果這是您的真實代碼,請嘗試初始化onCreate方法中的「posicion」對象而不是Class體。 – Cata

回答

0

你的問題是與你沒有分配'posicio'對象的事實。你簡單地聲明它是靜態的。因此,當您在onLocationChanged回調中從系統獲得回調時,您嘗試使用空對象。

在你onCreate方法,你需要分配並初始化與職位:

posicion = new Location(); 
0

的職位變量爲null這裏....初始化它老命/兩兩

onCreate()方法,使用默認值初始化posicion。和/或在適當的地方調用ObtenPosicion(),必要時使用try/catch