Android IllegalArgumentException:无效侦听器:requestLocationUpdate为null

Android IllegalArgumentException:无效侦听器:requestLocationUpdate为null,android,gps,location,Android,Gps,Location,我正在尝试创建一个对话框来配置gps,如果在开始LocationUpdate之前此对话框处于关闭状态,则会出现以下错误。 有解决办法吗 这是主要的活动 public class MainActivity extends Activity { LocationManager lm; LocationListener locationListener; Context context; private TextView mLatLng; DialogSettingsGPS dialogGPS; /

我正在尝试创建一个对话框来配置gps,如果在开始LocationUpdate之前此对话框处于关闭状态,则会出现以下错误。 有解决办法吗

这是主要的活动

public class MainActivity extends Activity {
LocationManager lm;
LocationListener locationListener;
Context context;
private TextView mLatLng;
DialogSettingsGPS dialogGPS;

// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //---use the LocationManager class to obtain locations data---
    lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mLatLng = (TextView) findViewById(R.id.lat_lng);
    dialogGPS = new DialogSettingsGPS(MainActivity.this);

    // getting GPS status
    isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

    if(isGPSEnabled){
        locationListener = new MyLocationListener();        
    }else{  
        dialogGPS.showSettingsAlert();      
    }

}


@Override
public void onResume() {

    super.onResume();

    lm.requestLocationUpdates(
            LocationManager.GPS_PROVIDER,
            10000, //mínimo tiempo de actualización
            0,  //mínima distancia de act.
            locationListener);  
}    

@Override
public void onDestroy() {
    super.onDestroy();

    //---remove the location listener---
    lm.removeUpdates(locationListener);
}
//Para escuchar los cambios el Location, se necesita crear una clase 
//que implemente la interfaz de LocationListener.

private class MyLocationListener implements LocationListener
{

    @Override
    public void onLocationChanged(Location loc) {
        if (loc != null) {
            double latitude = loc.getLatitude();
            double longitude = loc.getLongitude();
            mLatLng.setText(getString(R.string.latitude_longitude, latitude, longitude));
        }
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

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

}
这是对话框的类,DialogSettingsGPS:

public class DialogSettingsGPS extends Service {

private final Context mContext;

public DialogSettingsGPS(Context context){
    this.mContext = context;

}


/**
 * Function to show settings alert dialog
 * On pressing Settings button will lauch Settings Options
 * */
public void showSettingsAlert(){
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

    // Setting Dialog Title
    alertDialog.setTitle("Configuración GPS");

    // Setting Dialog Message
    alertDialog.setMessage("GPS desactivado. ¿Desea ir al menu de configuración?");

    // On pressing Settings button
    alertDialog.setPositiveButton("Configuración", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            mContext.startActivity(intent);
        }
    });

    // on pressing cancel button
    alertDialog.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
        }
    });

    // Showing Alert Message
    alertDialog.show();
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}
}
这就是错误:

03-20 16:33:10.643:E/AndroidRuntime(6750):致命异常:main 03-20 16:33:10.643:E/AndroidRuntime(6750):过程: com.example.followtrackgps,PID:6750 03-20 16:33:10.643: E/AndroidRuntime(6750):java.lang.RuntimeException:无法恢复 活动 {com.example.followtrackgps/com.example.followtrackgps.MainActivity}: java.lang.IllegalArgumentException:无效侦听器:null 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:2826) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2859) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread.access$800(ActivityThread.java:139)03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.os.Handler.dispatchMessage(Handler.java:102)03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.os.Looper.loop(Looper.java:136)03-20 16:33:10.643: E/AndroidRuntime(6750):在 android.app.ActivityThread.main(ActivityThread.java:5102)03-20 16:33:10.643:E/AndroidRuntime(6750):在 java.lang.reflect.Method.Invokenactive(本机方法)03-20 16:33:10.643:E/AndroidRuntime(6750):在 java.lang.reflect.Method.invoke(Method.java:515)03-20 16:33:10.643: E/AndroidRuntime(6750):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)03-20 16:33:10.643:E/AndroidRuntime(6750):在 dalvik.system.NativeStart.main(本机方法)03-20 16:33:10.643: E/AndroidRuntime(6750):由以下原因引起:java.lang.IllegalArgumentException: 无效侦听器:null 03-20 16:33:10.643:E/AndroidRuntime(6750):at location.LocationManager.checkListener(LocationManager.java:1635) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 location.LocationManager.RequestLocationUpdate(LocationManager.java:450) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 com.example.followtrackgps.MainActivity.onResume(MainActivity.java:68) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1215) 03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.Activity.performResume(Activity.java:5327)03-20 16:33:10.643:E/AndroidRuntime(6750):在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:2811) 03-20 16:33:10.643:E/AndroidRuntime(6750):。。。还有12个


提前感谢。

如果
isGPSEnabled
为false,会发生什么。提示:是否将调用
onResume()