I was developing a Android App using Android Studio, using Google Maps Services Location, and a get an error when a try to pass the parameters using the Parcelable interface, in my POJO (Lineas Class), based on API Android implementation.
The Apps should work show the best route using the differents lines of the Madrid train's Stations, based on your current location.
The Code of class Lineas where I found the error is this:
package com.example.rutas_metro_madrid;
import android.location.Location;
import android.os.Parcel;
import android.os.Parcelable;
import static android.content.ComponentName.readFromParcel;
public class Lineas extends Location implements Parcelable {
private String nombre;
Location[] estaciones;
protected int origenRuta;
protected int finalRuta;
private double datosParadaOrigen;
private double datosParadaDestino;
private Parcel parcel;
public void distancias(Location origen, Location destino){
//Almacenamos la distancia a la primera estacion, desde el origen
// y comprobamos cual es la menor.
datosParadaOrigen = origen.distanceTo(estaciones[0]);
datosParadaDestino = destino.distanceTo(estaciones[0]);
for (int i =0; i<estaciones.length; i++){
if(origen.distanceTo(estaciones[i])<datosParadaOrigen){
origenRuta = i;
datosParadaOrigen = origen.distanceTo(estaciones[i]);
}
if(destino.distanceTo(estaciones[i])<datosParadaDestino){
finalRuta = i;
datosParadaDestino = destino.distanceTo(estaciones[i]);
}
}
}
public double sumaDisMetro(){
return datosParadaOrigen+datosParadaDestino;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setEstaciones(Location[] estaciones) {
this.estaciones = estaciones;
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<Lineas> CREATOR
= new Parcelable.Creator<Lineas>() {
public Lineas createFromParcel(Parcel parcel) {
return new Lineas(parcel);
}
public Lineas[] newArray(int size) {
return new Lineas[size];
}
};
public Lineas(){
}
//Constructor de la Clase Parcelable.
public Lineas(Parcel parcel) {
readFromParcel(parcel);
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
//Almacenamos el objeto Linea en un Parcel.
parcel.writeString(nombre);
parcel.writeTypedArray(estaciones, 0);
parcel.writeInt(origenRuta);
parcel.writeInt(finalRuta);
parcel.writeDouble(datosParadaDestino);
parcel.writeDouble(datosParadaOrigen);
}
private void readFromParcel(Parcel parcel){
//Hay que leerlo en el mismo sentido en el que lo escribimos.
nombre = parcel.readString();
estaciones = parcel.createTypedArray(Location.CREATOR);
origenRuta = parcel.readInt();
finalRuta = parcel.readInt();
datosParadaOrigen = parcel.readDouble();
datosParadaDestino = parcel.readDouble();
}
}
The error which I get is this:
C:\Users\manul\AndroidStudioProjects\Rutas_metro_madrid\app\src\main\java\com\example\rutas_metro_madrid\Lineas.java:74: error: no suitable constructor found for Location(no arguments)
public Lineas(){
^
constructor Location.Location(String) is not applicable
(actual and formal argument lists differ in length)
constructor Location.Location(Location) is not applicable
(actual and formal argument lists differ in length)
If you any idea of why happens this I would appreciate your colaboration.
Thanks for advance!