none
¿Error al guardar longitud y latitud en android studio? RRS feed

  • Pregunta

  • Hola tengo una clase llamada Ubicación para obtener mi longitud y latitud, y al momento de querer guardarlas me salta una excepcion diciendo que las variables son nulas. Aquí dejo el código.

    public class Ubicacion extends Activity implements LocationListener {
        private Context context;
        LocationManager locationManager;
        String proveedor;
        private boolean networkOn;
        private static Base_datos modelo;
    
        public Ubicacion() {
            super();
        }
    
    public Ubicacion(Context context) {
    this.context = context;
    locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    proveedor = LocationManager.NETWORK_PROVIDER;
    networkOn = locationManager.isProviderEnabled(proveedor);
    
    if (ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
            {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_NETWORK_STATE}, 120);
            }
            locationManager.requestLocationUpdates(proveedor, 1000, 1, this);
            getLocation();
        }
    
        private void getLocation() {
            if (networkOn)
            {
                if (ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
                {
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_NETWORK_STATE}, 120);
                }
                Location lc = locationManager.getLastKnownLocation(proveedor);
                if (lc != null)
                {
                     try{
                       modelo.GPS_Latitud =lc.getLatitude();
                       modelo.GPS_Longitud =lc.getLongitude();
    
                        }
                    catch(Exception e)
                        {
                        e.printStackTrace();
                        }
                }
            }
       }
    
        
        @Override
        public void onLocationChanged(Location location) {
        getLocation();
        }
    
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
    
        }
    
        @Override
        public void onProviderEnabled(String provider) {
    
        }
    
        @Override
        public void onProviderDisabled(String provider) {
    
        }
    }

    Error:

    modelo.GPS_Latitud=java.lang.NullPointerException
    modelo.GPS_Longitud=java.lang.NullPointerException

    Al depurar si obtiene los valores bien 

    jueves, 26 de julio de 2018 2:41

Respuestas

Todas las respuestas

  • Puede ser que el error de nullpointerexception te lo dé por culpa de "modelo" y no por la latitud y longitud.

    Dará error si modelo es null, y de hecho en tu código no se ve que inicialices modelo en ningún momento, así que no es de extrañar que valga null.

    jueves, 26 de julio de 2018 6:00
  • Hola los he inicializado asi

    modelo.GPS_Latitud=0.0;
    modelo.GPS_Longitud=0.0; pero de igual manera me da la excepcion

    jueves, 26 de julio de 2018 14:31
  • No, eso no sirve para nada. Lo que falta es inicializar la variable modelo, no las propiedades de modelo.

    Posiblemente algo parecido a lo siguiente:

    modelo = new Base_datos();

    pero puede que no sea exactamente así, dependerá de cómo esté declarada la clase "Base_datos".

    jueves, 26 de julio de 2018 17:01
  • Esta es la clase:

    public class Base_datos implements Serializable {
    public int id;
    public double GPS_Latitud;
    public double GPS_Longitud;
    }

    Y asi la inicializo

    modelo = (Base_datos) getIntent().getSerializableExtra("nombre");

    Y aun lo muestra como null...

    jueves, 26 de julio de 2018 17:21
  • Y asi la inicializo

    modelo = (Base_datos) getIntent().getSerializableExtra("nombre");

    Eso te devuelve el valor que antes inicializaste con putExtra, de lo contrario devuelve null.

    Puesto que te está devolviendo null, se infiere que hay algún problema en la lógica del programa, y no has pasado por el putExtra antes de llamar al getSerializableExtra.

    https://developer.android.com/reference/android/content/Intent#getSerializableExtra(java.lang.String)

    • Marcado como respuesta Sunflower18 viernes, 27 de julio de 2018 14:08
    jueves, 26 de julio de 2018 18:32