realización de implementaciones de clases parcelables

mi aplicación falla cuando navego por los fragmentos. el error logcat le dice a BadParcelableException: el protocolo Parcelable requiere un objeto Parcelable.Creator llamado CREATOR en la clase ge.mobility.weather.entity.City. así que necesito que mis clases implementen parcelable y luego quiero pasar un objeto Ciudad a través del fragmento.

import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;

public class City implements Parcelable {
    private String code;
    private String name;

    private List<CityWeather> weathers ;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public List<CityWeather> getWeathers() {
        if(weathers == null) {
            weathers = new ArrayList<CityWeather>();
        }
        return weathers;
    }
    public void addCityWeather(CityWeather w) {
        getWeathers().add(w);
    }

    public void addCityWeathers(List<CityWeather> w) {
        getWeathers().addAll(w);
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
}

y la segunda clase

import android.os.Parcel;
import android.os.Parcelable;

public class CityWeather  {

    private String date;
    private String weatherDescription;
    private int weatherCode;
    private String currentTemperature;
    private String minTemperature;
    private String maxTemperature;
    private String humadity;
    private String wind;
    private String day;
    private String temperatureUnit;

    public String getTemperatureUnit(){
        return temperatureUnit;
    }
    public void setTemperatureUnit(String temperatureUnit){
        this.temperatureUnit = temperatureUnit;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getWeatherDescription() {
        return weatherDescription;
    }
    public void setWeatherDescription(String weatherDescription) {
        this.weatherDescription = weatherDescription;
    }
    public int getWeatherCode() {
        return weatherCode;
    }
    public void setWeatherCode(int weatherCode) {
        this.weatherCode = weatherCode;
    }
    public String getCurrentTemperature() {
        return currentTemperature;
    }
    public void setCurrentTemperature(String currentTemperature) {
        this.currentTemperature = currentTemperature;
    }
    public String getMinTemperature() {
        return minTemperature;
    }
    public void setMinTemperature(String minTemperature) {
        this.minTemperature = minTemperature;
    }
    public String getMaxTemperature() {
        return maxTemperature;
    }
    public void setMaxTemperature(String maxTemperature) {
        this.maxTemperature = maxTemperature;
    }
    public String getHumadity() {
        return humadity;
    }
    public void setHumadity(String humadity) {
        this.humadity = humadity;
    }
    public String getWind() {
        return wind;
    }
    public void setWind(String wind) {
        this.wind = wind;
    }
    public String getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub

    }
}

preguntado el 15 de febrero de 14 a las 20:02

1 Respuestas

Cuando intentas implementar Parcelable entonces debe tener que crear un objeto llamado CREATOR dentro de su clase que implemente el Parcelable interfaz como ejemplo para su City clase...

public static final Parcelable.Creator<City> CREATOR = new Creator<City>() {

    @Override
    public City[] newArray(int size) {
        return new City[size];
    }

    @Override
    public City createFromParcel(Parcel in) {
        return new City(in);
    }
};

Respondido 15 Feb 14, 20:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.