2014-11-08 45 views
1

我試圖從頭開始編寫一個GPS跟蹤器,但它只是在開始時纔會失敗。ANDROID GPS/Invalid Listener

出於某種原因,下面的代碼給了我一個IllegalArgumentException:invalid listener:null。

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
mLocationManager.getProvider(LocationManager.GPS_PROVIDER); 
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener); 

mLocationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
      Log.i(TAG,"There is some noticeable movement"); 
     } 

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

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

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

任何線索?

回答

0

,因爲在這條線

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener); 

mLocationListenernull它。在requestLocationUpdates`之前初始化它。

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
mLocationManager.getProvider(LocationManager.GPS_PROVIDER); 

mLocationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
      Log.i(TAG,"There is some noticeable movement"); 
     } 

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

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

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      // Auto-generated method stub 
     } 
} 
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener); 
0

更改代碼,

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
mLocationManager.getProvider(LocationManager.GPS_PROVIDER); 


mLocationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
      Log.i(TAG,"There is some noticeable movement"); 
     } 

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

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

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

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener);