I am sending an object from an antivity to other. the class is:
public class Reparacion implements Parcelable {
private int tipo;
private int estado;
private int id;
private String razonSocial;
private String direccion;
private String contacto;
private String telefono;
private String detalle;
public Reparacion() {
}
public Reparacion(int tipo, int estado, int id, String razSoc, String dir,
String contacto, String tfno, String detalle) {
this.tipo = tipo;
this.estado = estado;
this.id = id;
this.razonSocial = razSoc;
this.direccion = dir;
this.contacto = contacto;
this.telefono = tfno;
this.detalle = detalle;
}
public String getContacto() {
return contacto;
}
public void setContacto(String contacto) {
this.contacto = contacto;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getDetalle() {
return detalle;
}
public void setDetalle(String detalle) {
this.detalle = detalle;
}
public int getTipo() {
return tipo;
}
public void setTipo(int tipo) {
this.tipo = tipo;
}
public String getRazonSocial() {
return razonSocial;
}
public void setRazonSocial(String razonSocial) {
this.razonSocial = razonSocial;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public int getEstado() {
return estado;
}
public void setEstado(int estado) {
this.estado = estado;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
#Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.tipo);
dest.writeInt(this.estado);
dest.writeLong(this.id);
dest.writeString(this.razonSocial);
dest.writeString(this.direccion);
dest.writeString(this.contacto);
dest.writeString(this.telefono);
dest.writeString(this.detalle);
}
public Reparacion(Parcel in) {
readFromParcel(in);
}
private void readFromParcel(Parcel in) {
this.tipo = in.readInt();
this.estado = in.readInt();
this.id = in.readInt();
this.razonSocial = in.readString();
this.direccion = in.readString();
this.contacto = in.readString();
this.telefono = in.readString();
this.detalle = in.readString();
}
public static final Parcelable.Creator<Reparacion> CREATOR = new Parcelable.Creator<Reparacion>() {
public Reparacion createFromParcel(Parcel in) {
return new Reparacion(in);
}
public Reparacion[] newArray(int size) {
return new Reparacion[size];
}
};
public void almacenar(Context contexto){
ReparacionBBDD rbd=new ReparacionBBDD(contexto);
rbd.insert(this);
}
public void eliminar(Context contexto){
ReparacionBBDD rbd=new ReparacionBBDD(contexto);
rbd.delete(this);
}
public void actualizar(Context contexto){
ReparacionBBDD rbd=new ReparacionBBDD(contexto);
rbd.update(this);
}
}
The problem is that I can recovery the int data, but the string data is null when I received the object. how is it possible???
I have read a lot of codes, and I have do it a lot of times, but I don't know the mistake!!
very thanks!!!
You must retrieve data as the way (data-type & order) you added. So this line can cause the issue:
dest.writeLong(this.id);
Replace that with:
dest.writeInt(this.id);
Related
I am trying to insert realm lists to my realmdb in my first insert there is no problem but when I insert another realmList with a different class, my old values are deleted. So how can I insert a realmlist to DB? inserts are done separately.
RealmList<Product> insertedProduct = new RealmList<Product>();
RealmList<ProductSubCategory> insertedSubCategory = new RealmList<ProductSubCategory>();
RealmList<ProductMainCategory> insertedMainCategory = new RealmList<ProductMainCategory>();
... inserting to realm list firt time ...
insertRealmList(insertedProduct); //inserting to realmDB first time
insertRealmList(insertedSubCategory); //inserting to realmDB first time
insertRealmList(insertedMainCategory); //inserting to realmDB first time
first insert to realmDB
RealmList insert function
private void insertRealmList(final RealmList realmObject) {
mRealm = Realm.getDefaultInstance();
realmTask = mRealm.executeTransactionAsync(
new Realm.Transaction() {
#Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(realmObject);
}
},
new Realm.Transaction.OnSuccess() {
#Override
public void onSuccess() {
Log.i(TAG, "onSuccess: successfully inserted data");
}
},
new Realm.Transaction.OnError() {
#Override
public void onError(Throwable error) {
Log.i(TAG, "onError: error while inserting " + "error: " + error);
}
}
);
}
... inserting to realm list second time...
insertRealmList(insertedLanguages); //insert realmDB second time
second insert to realmDB
PRODUCT MODEL
package Model;
import io.realm.RealmList;
import io.realm.RealmObject;
import io.realm.annotations.Ignore;
import io.realm.annotations.Index;
import io.realm.annotations.PrimaryKey;
public class Product extends RealmObject {
#PrimaryKey
#Index
private int ID;
#Index
private int PLU_NO;
private String PRODUCT_NAME;
private String MAIN_CATEGORY;
private String SUB_CATEGORY;
private String TYPE;
private String TUS;
private Double PRICE;
private String CALORIE;
private String COOKING_TIME;
private RealmList<String> PRODUCT_NAME_LANGUAGES;
private RealmList<String> PRODUCT_DESCRIPTION_LANGUAGES;
private String IMAGE_BASE_HORIZONTAL; //4/3
private String IMAGE_BASE_VERTICAL; //16/9
private String VIDEO_NAME; //video name
#Ignore
private int AMOUNT;
#Ignore
private int WINDOW_AMOUNT = 1;
public Product(int ID, int PLU_NO, String PRODUCT_NAME, String MAIN_CATEGORY, String SUB_CATEGORY, String TYPE, String TUS, Double PRICE, String CALORIE, String COOKING_TIME, RealmList<String> PRODUCT_NAME_LANGUAGES, RealmList<String> PRODUCT_DESCRIPTION_LANGUAGES, String IMAGE_BASE_HORIZONTAL, String IMAGE_BASE_VERTICAL, String VIDEO_NAME) {
this.ID = ID;
this.PLU_NO = PLU_NO;
this.PRODUCT_NAME = PRODUCT_NAME;
this.MAIN_CATEGORY = MAIN_CATEGORY;
this.SUB_CATEGORY = SUB_CATEGORY;
this.TYPE = TYPE;
this.TUS = TUS;
this.PRICE = PRICE;
this.CALORIE = CALORIE;
this.COOKING_TIME = COOKING_TIME;
this.PRODUCT_NAME_LANGUAGES = PRODUCT_NAME_LANGUAGES;
this.PRODUCT_DESCRIPTION_LANGUAGES = PRODUCT_DESCRIPTION_LANGUAGES;
this.IMAGE_BASE_HORIZONTAL = IMAGE_BASE_HORIZONTAL;
this.IMAGE_BASE_VERTICAL = IMAGE_BASE_VERTICAL;
this.VIDEO_NAME = VIDEO_NAME;
}
public Product() {
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public int getPLU_NO() {
return PLU_NO;
}
public void setPLU_NO(int PLU_NO) {
this.PLU_NO = PLU_NO;
}
public String getPRODUCT_NAME() {
return PRODUCT_NAME;
}
public void setPRODUCT_NAME(String PRODUCT_NAME) {
this.PRODUCT_NAME = PRODUCT_NAME;
}
public String getMAIN_CATEGORY() {
return MAIN_CATEGORY;
}
public void setMAIN_CATEGORY(String MAIN_CATEGORY) {
this.MAIN_CATEGORY = MAIN_CATEGORY;
}
public String getSUB_CATEGORY() {
return SUB_CATEGORY;
}
public void setSUB_CATEGORY(String SUB_CATEGORY) {
this.SUB_CATEGORY = SUB_CATEGORY;
}
public String getTYPE() {
return TYPE;
}
public void setTYPE(String TYPE) {
this.TYPE = TYPE;
}
public String getTUS() {
return TUS;
}
public void setTUS(String TUS) {
this.TUS = TUS;
}
public Double getPRICE() {
return PRICE;
}
public void setPRICE(Double PRICE) {
this.PRICE = PRICE;
}
public String getCALORIE() {
return CALORIE;
}
public void setCALORIE(String CALORIE) {
this.CALORIE = CALORIE;
}
public String getCOOKING_TIME() {
return COOKING_TIME;
}
public void setCOOKING_TIME(String COOKING_TIME) {
this.COOKING_TIME = COOKING_TIME;
}
public RealmList<String> getPRODUCT_NAME_LANGUAGES() {
return PRODUCT_NAME_LANGUAGES;
}
public void setPRODUCT_NAME_LANGUAGES(RealmList<String> PRODUCT_NAME_LANGUAGES) {
this.PRODUCT_NAME_LANGUAGES = PRODUCT_NAME_LANGUAGES;
}
public RealmList<String> getPRODUCT_DESCRIPTION_LANGUAGES() {
return PRODUCT_DESCRIPTION_LANGUAGES;
}
public void setPRODUCT_DESCRIPTION_LANGUAGES(RealmList<String> PRODUCT_DESCRIPTION_LANGUAGES) {
this.PRODUCT_DESCRIPTION_LANGUAGES = PRODUCT_DESCRIPTION_LANGUAGES;
}
public String getIMAGE_BASE_HORIZONTAL() {
return IMAGE_BASE_HORIZONTAL;
}
public void setIMAGE_BASE_HORIZONTAL(String IMAGE_BASE_HORIZONTAL) {
this.IMAGE_BASE_HORIZONTAL = IMAGE_BASE_HORIZONTAL;
}
public String getIMAGE_BASE_VERTICAL() {
return IMAGE_BASE_VERTICAL;
}
public void setIMAGE_BASE_VERTICAL(String IMAGE_BASE_VERTICAL) {
this.IMAGE_BASE_VERTICAL = IMAGE_BASE_VERTICAL;
}
public String getVIDEO_NAME() {
return VIDEO_NAME;
}
public void setVIDEO_NAME(String VIDEO_NAME) {
this.VIDEO_NAME = VIDEO_NAME;
}
public int getAMOUNT() {
return AMOUNT;
}
public void setAMOUNT(int AMOUNT) {
this.AMOUNT = AMOUNT;
}
public int getWINDOW_AMOUNT() {
return WINDOW_AMOUNT;
}
public void setWINDOW_AMOUNT(int WINDOW_AMOUNT) {
this.WINDOW_AMOUNT = WINDOW_AMOUNT;
}
public void setDEFAULT_WINDOW_AMOUNT() {
this.WINDOW_AMOUNT = 1;
}
}
LANGUAGE MODEL
package Model;
import io.realm.RealmObject;
public class Language extends RealmObject {
#PrimaryKey
#Index
private int ID;
private String ICON;
private String NAME;
public Language(){
}
public Language(int ID, String ICON, String NAME) {
this.ID = ID;
this.ICON = ICON;
this.NAME = NAME;
}
public int getId() {
return ID;
}
public void setId(int id) {
this.ID = id;
}
public String getICON() {
return ICON;
}
public void setICON(String ICON) {
this.ICON = ICON;
}
public String getName() {
return NAME;
}
public void setName(String name) {
this.NAME = name;
}
}
Other two models are similar with product.
Please try the following method:
private <T extends RealmModel> void insertRealmList(final List<T> objects) {
try (Realm realmInstance = Realm.getDefaultInstance()) {
realmInstance.executeTransaction(realm -> {
for (T object : objects) {
realmInstance.insertOrUpdate(object);
}
});
}
}
Hope this helps!
I am trying to access getter property of the pojo received in the response, but there is no such option.so is there any other way, I can do that?
The code for that call is as below:
results.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<GenericResponse<List<FoodTruck>>>() {
#Override
public void onCompleted() {
Toast.makeText(getActivity(), "completed", Toast.LENGTH_SHORT).show();
unsubscribe();
}
#Override
public void onError(Throwable e) {
Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT).show();
}
#Override
public void onNext(GenericResponse<List<FoodTruck>> response) {
Toast.makeText(getActivity(), response.toString(), Toast.LENGTH_SHORT).show();
}
});
GenericResponse.java
public class GenericResponse<T> {
#JsonProperty("status")
private String status;
#JsonProperty("message")
private String message;
#JsonProperty("data")
private T data;
}
FoodTruck.java
#JsonInclude(JsonInclude.Include.NON_NULL)
public class FoodTruck implements Parcelable {
#JsonProperty("_id")
private String foodTruckId;
#JsonProperty("foodtruck_name")
private String foodTruckName;
#JsonProperty("foodtruck_location")
private String foodTruckLocation;
#JsonProperty("foodtruck_tag")
private String foodTruckTag;
#JsonProperty("foodtruck_timing")
private String foodTruckTiming;
#JsonProperty("foodtruck_cusine")
private String foodTruckCusine;
#JsonProperty("foodtruck_img")
private String foodTruckImg;
#JsonProperty("foodtruck_logo")
private String foodTruckLogo;
#JsonProperty("foodtruck_total_votes")
private int foodTruckTotalVotes;
#JsonProperty("foodtruck_rating")
private double foodTruckRating;
#JsonProperty("item_list")
private List<FoodTruckItem> foodTruckItemList;
public String getFoodTruckId() {
return foodTruckId;
}
public String getFoodTruckName() {
return foodTruckName;
}
public String getFoodTruckLocation() {
return foodTruckLocation;
}
public String getFoodTruckTag() {
return foodTruckTag;
}
public String getFoodTruckTiming() {
return foodTruckTiming;
}
public String getFoodTruckCusine() {
return foodTruckCusine;
}
public String getFoodTruckImg() {
return foodTruckImg;
}
public String getFoodTruckLogo() {
return foodTruckLogo;
}
public int getFoodTruckTotalVotes() {
return foodTruckTotalVotes;
}
public double getFoodTruckRating() {
return foodTruckRating;
}
public List<FoodTruckItem> getFoodTruckItemList() {
return foodTruckItemList;
}
public void setFoodTruckId(String foodTruckId) {
this.foodTruckId = foodTruckId;
}
public void setFoodTruckName(String foodTruckName) {
this.foodTruckName = foodTruckName;
}
public void setFoodTruckLocation(String foodTruckLocation) {
this.foodTruckLocation = foodTruckLocation;
}
public void setFoodTruckTag(String foodTruckTag) {
this.foodTruckTag = foodTruckTag;
}
public void setFoodTruckTiming(String foodTruckTiming) {
this.foodTruckTiming = foodTruckTiming;
}
public void setFoodTruckCusine(String foodTruckCusine) {
this.foodTruckCusine = foodTruckCusine;
}
public void setFoodTruckImg(String foodTruckImg) {
this.foodTruckImg = foodTruckImg;
}
public void setFoodTruckLogo(String foodTruckLogo) {
this.foodTruckLogo = foodTruckLogo;
}
public void setFoodTruckTotalVotes(int foodTruckTotalVotes) {
this.foodTruckTotalVotes = foodTruckTotalVotes;
}
public void setFoodTruckRating(double foodTruckRating) {
this.foodTruckRating = foodTruckRating;
}
public void setFoodTruckItemList(List<FoodTruckItem> foodTruckItemList) {
this.foodTruckItemList = foodTruckItemList;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.foodTruckId);
dest.writeString(this.foodTruckName);
dest.writeString(this.foodTruckLocation);
dest.writeString(this.foodTruckTag);
dest.writeString(this.foodTruckTiming);
dest.writeString(this.foodTruckCusine);
dest.writeString(this.foodTruckImg);
dest.writeString(this.foodTruckLogo);
dest.writeInt(this.foodTruckTotalVotes);
dest.writeDouble(this.foodTruckRating);
dest.writeTypedList(this.foodTruckItemList);
}
public FoodTruck() {
}
protected FoodTruck(Parcel in) {
this.foodTruckId = in.readString();
this.foodTruckName = in.readString();
this.foodTruckLocation = in.readString();
this.foodTruckTag = in.readString();
this.foodTruckTiming = in.readString();
this.foodTruckCusine = in.readString();
this.foodTruckImg = in.readString();
this.foodTruckLogo = in.readString();
this.foodTruckTotalVotes = in.readInt();
this.foodTruckRating = in.readDouble();
this.foodTruckItemList = in.createTypedArrayList(FoodTruckItem.CREATOR);
}
public static final Parcelable.Creator<FoodTruck> CREATOR = new Parcelable.Creator<FoodTruck>() {
#Override
public FoodTruck createFromParcel(Parcel source) {
return new FoodTruck(source);
}
#Override
public FoodTruck[] newArray(int size) {
return new FoodTruck[size];
}
};
}
FoodTruckItem.java
#JsonInclude(JsonInclude.Include.NON_NULL)
public class FoodTruckItem implements Parcelable {
#JsonProperty("_id")
private String itemId;
#JsonProperty("no_of_times_ordered")
private int noOfTimesOrdered;
#JsonProperty("item_name")
private String itemName;
#JsonProperty("item_tag")
private String itemTag;
#JsonProperty("item_category")
private String itemCategory;
#JsonProperty("item_stock")
private int itemStock;
#JsonProperty("item_price")
private double itemPrice;
#JsonProperty("item_img")
private String itemImg;
#JsonProperty("no_of_likes")
private int noOfLikes;
#JsonProperty("item_quantity_ordered")
private int itemQuantityOrdered;
#JsonProperty("item_illustrations")
private List<String> itemIllustration;
public String getItemId() {
return itemId;
}
public int getNoOfTimesOrdered() {
return noOfTimesOrdered;
}
public String getItemName() {
return itemName;
}
public String getItemTag() {
return itemTag;
}
public String getItemCategory() {
return itemCategory;
}
public int getItemStock() {
return itemStock;
}
public double getItemPrice() {
return itemPrice;
}
public String getItemImg() {
return itemImg;
}
public int getNoOfLikes() {
return noOfLikes;
}
public int getItemQuantityOrdered() {
return itemQuantityOrdered;
}
public List<String> getItemIllustration() {
return itemIllustration;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
public void setNoOfTimesOrdered(int noOfTimesOrdered) {
this.noOfTimesOrdered = noOfTimesOrdered;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public void setItemTag(String itemTag) {
this.itemTag = itemTag;
}
public void setItemCategory(String itemCategory) {
this.itemCategory = itemCategory;
}
public void setItemStock(int itemStock) {
this.itemStock = itemStock;
}
public void setItemPrice(double itemPrice) {
this.itemPrice = itemPrice;
}
public void setItemImg(String itemImg) {
this.itemImg = itemImg;
}
public void setNoOfLikes(int noOfLikes) {
this.noOfLikes = noOfLikes;
}
public void setItemQuantityOrdered(int itemQuantityOrdered) {
this.itemQuantityOrdered = itemQuantityOrdered;
}
public void setItemIllustration(List<String> itemIllustration) {
this.itemIllustration = itemIllustration;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.itemId);
dest.writeInt(this.noOfTimesOrdered);
dest.writeString(this.itemName);
dest.writeString(this.itemTag);
dest.writeString(this.itemCategory);
dest.writeInt(this.itemStock);
dest.writeDouble(this.itemPrice);
dest.writeString(this.itemImg);
dest.writeInt(this.noOfLikes);
dest.writeInt(this.itemQuantityOrdered);
dest.writeStringList(this.itemIllustration);
}
public FoodTruckItem() {
}
protected FoodTruckItem(Parcel in) {
this.itemId = in.readString();
this.noOfTimesOrdered = in.readInt();
this.itemName = in.readString();
this.itemTag = in.readString();
this.itemCategory = in.readString();
this.itemStock = in.readInt();
this.itemPrice = in.readDouble();
this.itemImg = in.readString();
this.noOfLikes = in.readInt();
this.itemQuantityOrdered = in.readInt();
this.itemIllustration = in.createStringArrayList();
}
public static final Parcelable.Creator<FoodTruckItem> CREATOR = new Parcelable.Creator<FoodTruckItem>() {
#Override
public FoodTruckItem createFromParcel(Parcel source) {
return new FoodTruckItem(source);
}
#Override
public FoodTruckItem[] newArray(int size) {
return new FoodTruckItem[size];
}
};
}
Now Basically I want to acess someting like response.getData().... But there is no such option.
Possibly data not accessible, because it is private. Try to crete getter method.
public class GenericResponse<T> {
#JsonProperty("status")
private String status;
#JsonProperty("message")
private String message;
#JsonProperty("data")
private T data;
public T getData() {
return data;
}
}
I am quite familiar with Json parsing with Gson. I have done Json parsing using Gson but recently i have multiple json objects with response, i am getting little bit stuck with parsing, here is my code,can anyone help me to solve my problem,that where i am doing wrong.
Thanks in advance
Here is my json response :-
Json response
Here is my POGO class of parsing :-
Style Profile.java
public class StyleProfile implements Parcelable {
#SerializedName("user_name")
#Expose
private String user_name;
#SerializedName("user_picture")
#Expose
private String user_picture;
#SerializedName("user_attr")
#Expose
private UserAttrEntity user_attr;
#SerializedName("user_attributes")
#Expose
private UserAttributes userAttributes;
#SerializedName("style_attr")
#Expose
private StyleAttr style_attr;
private StyleAttrEntity style_attrEntity;
private UserAttributesEntity user_attributes;
private String user_style;
#SerializedName("user_background_image")
#Expose
private String userBackgroundImage;
#SerializedName("user_style_message")
#Expose
private String userStyleMessage;
private String user_style_message;
private List<String> style_message;
public StyleProfile() {
}
protected StyleProfile(Parcel in)
{
user_name = in.readString();
user_picture = in.readString();
user_style = in.readString();
// style_message = in.readString();
}
public static final Creator<StyleProfile> CREATOR = new Creator<StyleProfile>() {
#Override
public StyleProfile createFromParcel(Parcel in) {
return new StyleProfile(in);
}
#Override
public StyleProfile[] newArray(int size) {
return new StyleProfile[size];
}
};
public StyleAttr getStyle_attr() {
return style_attr;
}
public void setStyle_attr(StyleAttr style_attr) {
this.style_attr = style_attr;
}
public String getName() {
return user_name;
}
public void setName(String name) {
this.user_name = name;
}
public String getImage() {
return user_picture;
}
public void setImage(String image) {
this.user_picture = image;
}
public UserAttrEntity getUser_attr() {
return user_attr;
}
public void setUser_attributes(UserAttributesEntity user_attributes) {
this.user_attributes = user_attributes;
}
public void setUser_style(String user_style) {
this.user_style = user_style;
}
public String getUser_style() {
return user_style;
}
public List<String> getStyle_message() {
return style_message;
}
public void setStyle_message(List<String> style_message) {
this.style_message = style_message;
}
public String getStyleMessageAsString() {
return TextUtils.join(". ", style_message);
}
public void setUser_style_message(String user_style_message) {
this.user_style_message = user_style_message;
}
public String getUser_style_message() {
return user_style_message;
}
public UserAttributesEntity getUser_attributes() {
return user_attributes;
}
public void setUser_attr(UserAttrEntity user_attr) {
this.user_attr = user_attr;
}
public UserAttributes getUserAttr() {
return userAttributes;
}
public void setUserAttr(UserAttributes userAttr) {
this.userAttributes = userAttr;
}
public UserAttributes getUserAttributes() {
return userAttributes;
}
public void setUserAttributes(UserAttributes userAttributes) {
this.userAttributes = userAttributes;
}
public String getUserStyle() {
return user_style;
}
public void setUserStyle(String userStyle) {
this.user_style = userStyle;
}
public String getUserBackgroundImage() {
return userBackgroundImage;
}
public void setUserBackgroundImage(String userBackgroundImage) {
this.userBackgroundImage = userBackgroundImage;
}
public String getUserStyleMessage() {
return userStyleMessage;
}
public void setUserStyleMessage(String userStyleMessage) {
this.userStyleMessage = userStyleMessage;
}
#Override
public int describeContents() {
return 0;
}
public StyleAttrEntity getStyle_attrEntity() {
return style_attrEntity;
}
public static Creator<StyleProfile> getCREATOR() {
return CREATOR;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(user_name);
dest.writeString(user_picture);
dest.writeParcelable(user_attr, flags);
dest.writeParcelable(style_attr, flags);
dest.writeString(user_style);
}
public void setStyle_attrEntity(StyleAttrEntity style_attrEntity) {
this.style_attrEntity = style_attrEntity;
}
public static class StyleAttr implements Parcelable {
#SerializedName("Edgy")
#Expose
private Integer edgy;
#SerializedName("Feminine")
#Expose
private Integer feminine;
#SerializedName("Fashion Forward")
#Expose
private Integer fashionForward;
#SerializedName("Classic")
#Expose
private Integer classic;
#SerializedName("Casual")
#Expose
private Integer casual;
#SerializedName("Bohemian")
#Expose
private Integer bohemian;
protected StyleAttr(Parcel in) {
edgy = in.readInt();
casual = in.readInt();
classic = in.readInt();
edgy = in.readInt();
fashionForward = in.readInt();
feminine = in.readInt();
}
public static final Creator<StyleAttr> CREATOR = new Creator<StyleAttr>() {
#Override
public StyleAttr createFromParcel(Parcel in) {
return new StyleAttr(in);
}
#Override
public StyleAttr[] newArray(int size) {
return new StyleAttr[size];
}
};
public void setBohemian(int Bohemian) {
this.bohemian = Bohemian;
}
public void setCasual(int Casual) {
this.casual = Casual;
}
public void setClassic(int Classic) {
this.classic = Classic;
}
public void setEdgy(int Edgy) {
this.edgy = Edgy;
}
public void setFashionForward(int FashionForward) {
this.fashionForward = FashionForward;
}
public void setFeminine(int Feminine) {
this.feminine = Feminine;
}
public int getBohemian() {
return bohemian;
}
public int getCasual() {
return casual;
}
public int getClassic() {
return classic;
}
public int getEdgy() {
return edgy;
}
public int getFashionForward() {
return fashionForward;
}
public int getFeminine() {
return feminine;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(bohemian);
dest.writeInt(casual);
dest.writeInt(classic);
dest.writeInt(edgy);
dest.writeInt(fashionForward);
dest.writeInt(feminine);
}
}
}
UserAttrEntity.java
public class UserAttrEntity implements Parcelable {
#SerializedName("Size")
private String Size = "";
#SerializedName("Shape")
private String Shape = "";
#SerializedName("Bottoms Size")
private String Bottoms_Size = "";
#SerializedName("Height")
private String Height = "";
#SerializedName("Shoes Size")
private String Shoes_Size = "";
#SerializedName("Complexion")
private String Face_Color = "";
#SerializedName("Face Shape")
private String Face_Shape = "";
public UserAttrEntity() {
}
protected UserAttrEntity(Parcel in) {
Shape = in.readString();
Size = in.readString();
Bottoms_Size = in.readString();
Height = in.readString();
Shoes_Size = in.readString();
Face_Color = in.readString();
Face_Shape = in.readString();
}
public static final Creator<UserAttrEntity> CREATOR = new Creator<UserAttrEntity>() {
#Override
public UserAttrEntity createFromParcel(Parcel in) {
return new UserAttrEntity(in);
}
#Override
public UserAttrEntity[] newArray(int size) {
return new UserAttrEntity[size];
}
};
public void setShape(String Shape) {
this.Shape = Shape;
}
public void setSize(String Size) {
this.Size = Size.replace("\n", " ");
}
public void setBottoms_Size(String Bottoms_Size) {
this.Bottoms_Size = Bottoms_Size + " Inch";
}
public void setHeight(String Height) {
this.Height = Height;
}
public void setShoes_Size(String Shoes_Size) {
this.Shoes_Size = Shoes_Size;
}
public void setFace_Color(String Face_Color) {
this.Face_Color = Face_Color;
}
public void setFace_Shape(String Face_Shape) {
this.Face_Shape = Face_Shape;
}
public String getShape() {
return Shape;
}
public String getSize() {
return Size;
}
public String getBottoms_Size() {
return Bottoms_Size;
}
public String getHeight() {
return Height;
}
public String getShoes_Size() {
return Shoes_Size;
}
public String getFace_Color() {
return Face_Color;
}
public String getFace_Shape() {
return Face_Shape;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(Shape);
dest.writeString(Size);
dest.writeString(Bottoms_Size);
dest.writeString(Height);
dest.writeString(Shoes_Size);
dest.writeString(Face_Color);
dest.writeString(Face_Shape);
}
}
User AttributesEntity.java
public class UserAttributes {
#SerializedName("Size")
#Expose
private Size size;
#SerializedName("Shape")
#Expose
private Shape shape;
#SerializedName("Bottoms Size")
#Expose
private BottomsSize bottomsSize;
#SerializedName("Height")
#Expose
private Height height;
#SerializedName("Shoes Size")
#Expose
private ShoesSize shoesSize;
#SerializedName("Complexion")
#Expose
private Complexion complexion;
#SerializedName("Face Shape")
#Expose
private FaceShape faceShape;
public Size getSize() {
return size;
}
public void setSize(Size size) {
this.size = size;
}
public Shape getShape() {
return shape;
}
public void setShape(Shape shape) {
this.shape = shape;
}
public BottomsSize getBottomsSize() {
return bottomsSize;
}
public void setBottomsSize(BottomsSize bottomsSize) {
this.bottomsSize = bottomsSize;
}
public Height getHeight() {
return height;
}
public void setHeight(Height height) {
this.height = height;
}
public ShoesSize getShoesSize() {
return shoesSize;
}
public void setShoesSize(ShoesSize shoesSize) {
this.shoesSize = shoesSize;
}
public Complexion getComplexion() {
return complexion;
}
public void setComplexion(Complexion complexion) {
this.complexion = complexion;
}
public FaceShape getFaceShape() {
return faceShape;
}
public void setFaceShape(FaceShape faceShape) {
this.faceShape = faceShape;
}
}
Style Profile.java
Here i am using it like this
Profile profile = gson.fromJson(obj.toString(), Profile.class);
Log.e("", "profile.getStatus() " + profile.getStatus());
mReceiver.onResponse(profile, tag);
Try this way
//Main data
public class MainData{
#SerializedName("status")
#Expose
private String status;
#SerializedName("data")
#Expose
private Data data;
}
//Data
public class Data {
#SerializedName("user_name")
#Expose
private String userName;
#SerializedName("user_picture")
#Expose
private String userPicture;
#SerializedName("user_attr")
#Expose
private UserAttr userAttr;
#SerializedName("user_attributes")
#Expose
private UserAttributes userAttributes;
#SerializedName("style_attr")
#Expose
private StyleAttr styleAttr;
#SerializedName("user_style")
#Expose
private String userStyle;
#SerializedName("user_background_image")
#Expose
private String userBackgroundImage;
#SerializedName("user_style_message")
#Expose
private String userStyleMessage;
}
//user_attr
public class UserAttr {
#SerializedName("user_attr")
private Map<String, String> userAttributes;
public Map<String, String> getUserAttributes() {
return userAttributes;
}
public void setUserAttributes(Map<String, String> userattributes) {
this.userAttributes= userattributes;
}
}
//user_attributes
public class UserAttributes {
#SerializedName("user_attributes")
private Map<String, CommonUserAttributes> userAttributes;
public Map<String, CommonUserAttributes> getUserAttributes() {
return userAttributes;
}
public void setUserAttributes(Map<String, CommonUserAttributes> userattributes) {
this.userAttributes = userattributes;
}
}
//StyleAttr
public class StyleAttr {
#SerializedName("style_attr")
private Map<String, Integer> styleAttributes;
public Map<String, Integer> getStyleAttributes() {
return styleAttributes;
}
public void setStyleAttributes(Map<String, Integer> styleAttributes) {
this.styleAttributes = styleAttributes;
}
}
//CommonUserAttributes
public class CommonUserAttributes {
#SerializedName("user_attr")
private String value;
#SerializedName("que_id")
private String bottmque_id;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getBottmque_id() {
return bottmque_id;
}
public void setBottmque_id(String bottmque_id) {
this.bottmque_id = bottmque_id;
}
}
put your get,set method yourself.
I have a problem with unmarshaling an parcelable object.
The exception is not reproducible every time but sometimes yes.
Here is the definition of the parcelable object :
public class Article extends DBOperationHolder implements Parcelable {
private static final String TAG = "Article_Object";
#SerializedName("article_id")
private int mId;
#SerializedName("city_id")
private int mCityId;
#SerializedName("categories")
private List<Integer> mCategories;
#SerializedName("neighborhood_tags")
private List<Integer> mNeighborhoodTags;
#SerializedName("cuisine_tags")
private List<Integer> mCuisineTags;
#SerializedName("collection_articles")
private List<Integer> mCollectionArticles;
#SerializedName("rating")
private int mRating;
#SerializedName("title")
private String mTitle;
#SerializedName("subtitle")
private String mSubTitle;
#SerializedName("summary")
private String mSummary;
#SerializedName("text")
private String mText;
#SerializedName("main_image_url")
private String mMainImgUrl;
#SerializedName("images")
private List<String> mImages;
#SerializedName("date_from")
private String mDateFrom;
#SerializedName("date_to")
private String mDateTo;
#SerializedName("venue_name")
private String mVenueName;
#SerializedName("address")
private String mAddress;
#SerializedName("address_latitude")
private double mAddressLatitude;
#SerializedName("address_longitude")
private double mAddressLongitude;
#SerializedName("contact_person")
private String mContactPerson;
#SerializedName("contact_email")
private String mContactEmail;
#SerializedName("contact_telephone")
private String mContactTelephone;
#SerializedName("contact_website")
private String mContactWebsite;
#SerializedName("style")
private String mStyle;
#SerializedName("ideal_for")
private String mIdealFor;
#SerializedName("favorite_tables")
private String mFavoriteTables;
#SerializedName("favorite_room")
private String mFavoriteRoom;
#SerializedName("signature_dishes")
private String mSignatureDishes;
#SerializedName("signature_drinks")
private String mSignatureDrinks;
#SerializedName("highlights")
private String mHighLights;
#SerializedName("type")
private String mType;
#SerializedName("membership_price")
private String mMemberShipPrice;
#SerializedName("membership_benefits")
private String mMemberShipBenefits;
#SerializedName("publish_date")
private String mPublishDate;
#SerializedName("article_url")
private String mArticleUrl;
private String mTag;
private boolean mIsCollection;
private int mIsAddedInFavorites;
private int mCategoryColor;
private String mCuisine;
private int mCategoryId;
public Article() {
}
public Article(int id) {
mId = id;
}
private Article(Parcel in) {
mId = in.readInt();
mCityId = in.readInt();
mRating = in.readInt();
mTitle = in.readString();
mSubTitle = in.readString();
mSummary = in.readString();
mText = in.readString();
mMainImgUrl = in.readString();
mDateFrom = in.readString();
mDateTo = in.readString();
mVenueName = in.readString();
mAddress = in.readString();
mAddressLatitude = in.readFloat();
mAddressLongitude = in.readFloat();
mContactPerson = in.readString();
mContactEmail = in.readString();
mContactTelephone = in.readString();
mContactWebsite = in.readString();
mStyle = in.readString();
mIdealFor = in.readString();
mFavoriteTables = in.readString();
mFavoriteRoom = in.readString();
mSignatureDishes = in.readString();
mSignatureDrinks = in.readString();
mHighLights = in.readString();
mType = in.readString();
mMemberShipPrice = in.readString();
mMemberShipBenefits = in.readString();
mPublishDate = in.readString();
mIsAddedInFavorites = in.readInt();
mTag = in.readString();
mCategoryColor = in.readInt();
mCuisine = in.readString();
mCategoryId = in.readInt();
mArticleUrl = in.readString();
}
#Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(mId);
parcel.writeInt(mCityId);
parcel.writeInt(mRating);
parcel.writeString(mTitle);
parcel.writeString(mSubTitle);
parcel.writeString(mSummary);
parcel.writeString(mText);
parcel.writeString(mMainImgUrl);
parcel.writeString(mDateFrom);
parcel.writeString(mDateTo);
parcel.writeString(mVenueName);
parcel.writeString(mAddress);
parcel.writeDouble(mAddressLatitude);
parcel.writeDouble(mAddressLongitude);
parcel.writeString(mContactPerson);
parcel.writeString(mContactEmail);
parcel.writeString(mContactTelephone);
parcel.writeString(mContactWebsite);
parcel.writeString(mStyle);
parcel.writeString(mIdealFor);
parcel.writeString(mFavoriteTables);
parcel.writeString(mFavoriteRoom);
parcel.writeString(mSignatureDishes);
parcel.writeString(mSignatureDrinks);
parcel.writeString(mHighLights);
parcel.writeString(mType);
parcel.writeString(mMemberShipPrice);
parcel.writeString(mMemberShipBenefits);
parcel.writeString(mPublishDate);
parcel.writeInt(mIsAddedInFavorites);
parcel.writeString(mTag);
parcel.writeInt(mCategoryColor);
parcel.writeString(mCuisine);
parcel.writeInt(mCategoryId);
parcel.writeString(mArticleUrl);
}
#Override
public int describeContents() {
return 0;
}
public static Creator<Article> CREATOR = new Creator<Article>() {
#Override
public Article createFromParcel(Parcel source) {
return new Article(source);
}
#Override
public Article[] newArray(int size) {
return new Article[size];
}
};
public String getMainImgUrl() {
if (TextUtils.isEmpty(mMainImgUrl)) {
if (!CollectionUtil.isEmpty(mImages)) {
mMainImgUrl = mImages.get(0);
}
}
return mMainImgUrl;
}
public int getId() {
return mId;
}
public void setId(int id) {
mId = id;
}
public int getCityId() {
return mCityId;
}
public void setCityId(int cityId) {
mCityId = cityId;
}
public List<Integer> getCategories() {
return mCategories;
}
public void setCategories(List<Integer> categories) {
mCategories = categories;
}
public List<Integer> getNeighborhoodTags() {
return mNeighborhoodTags;
}
public void setNeighborhoodTags(List<Integer> neighborhoodTags) {
mNeighborhoodTags = neighborhoodTags;
}
public List<Integer> getCuisineTags() {
return mCuisineTags;
}
public void setCuisineTags(List<Integer> cuisineTags) {
mCuisineTags = cuisineTags;
}
public List<Integer> getCollectionArticles() {
return mCollectionArticles;
}
public void setCollectionArticles(List<Integer> collectionArticles) {
mCollectionArticles = collectionArticles;
}
public int getRating() {
return mRating;
}
public void setRating(int rating) {
mRating = rating;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String getSubTitle() {
return mSubTitle;
}
public void setSubTitle(String subTitle) {
mSubTitle = subTitle;
}
public String getSummary() {
return mSummary;
}
public void setSummary(String summary) {
mSummary = summary;
}
public String getText() {
return mText;
}
public void setText(String text) {
mText = text;
}
public void setMainImgUrl(String mainImgUrl) {
mMainImgUrl = mainImgUrl;
}
public List<String> getImages() {
return mImages;
}
public void setImages(List<String> images) {
mImages = images;
}
public String getDateFrom() {
return mDateFrom;
}
public void setDateFrom(String dateFrom) {
mDateFrom = dateFrom;
}
public String getDateTo() {
return mDateTo;
}
public void setDateTo(String dateTo) {
mDateTo = dateTo;
}
public String getVenueName() {
return mVenueName;
}
public void setVenueName(String venueName) {
mVenueName = venueName;
}
public String getAddress() {
return mAddress;
}
public void setAddress(String address) {
mAddress = address;
}
public double getLatitude() {
return mAddressLatitude;
}
public void setLatitude(double addressLatitude) {
mAddressLatitude = addressLatitude;
}
public double getLongitude() {
return mAddressLongitude;
}
public void setLongitude(double addressLongitude) {
mAddressLongitude = addressLongitude;
}
public String getContactPerson() {
return mContactPerson;
}
public void setContactPerson(String contactPerson) {
mContactPerson = contactPerson;
}
public String getContactEmail() {
return mContactEmail;
}
public void setContactEmail(String contactEmail) {
mContactEmail = contactEmail;
}
public String getContactTelephone() {
return mContactTelephone;
}
public void setContactTelephone(String contactTelephone) {
mContactTelephone = contactTelephone;
}
public String getContactWebsite() {
return mContactWebsite;
}
public void setContactWebsite(String contactWebsite) {
mContactWebsite = contactWebsite;
}
public String getStyle() {
return mStyle;
}
public void setStyle(String style) {
mStyle = style;
}
public String getIdealFor() {
return mIdealFor;
}
public void setIdealFor(String idealFor) {
mIdealFor = idealFor;
}
public String getFavoriteTables() {
return mFavoriteTables;
}
public void setFavoriteTables(String favoriteTables) {
mFavoriteTables = favoriteTables;
}
public String getFavoriteRoom() {
return mFavoriteRoom;
}
public void setFavoriteRoom(String favoriteRoom) {
mFavoriteRoom = favoriteRoom;
}
public String getSignatureDishes() {
return mSignatureDishes;
}
public void setSignatureDishes(String signatureDishes) {
mSignatureDishes = signatureDishes;
}
public String getSignatureDrinks() {
return mSignatureDrinks;
}
public void setSignatureDrinks(String signatureDrinks) {
mSignatureDrinks = signatureDrinks;
}
public String getHighLights() {
return mHighLights;
}
public void setHighLights(String highLights) {
mHighLights = highLights;
}
public String getType() {
return mType;
}
public void setType(String type) {
mType = type;
}
public String getMemberShipPrice() {
return mMemberShipPrice;
}
public void setMemberShipPrice(String memberShipPrice) {
mMemberShipPrice = memberShipPrice;
}
public String getMemberShipBenefits() {
return mMemberShipBenefits;
}
public void setMemberShipBenefits(String memberShipBenefits) {
mMemberShipBenefits = memberShipBenefits;
}
public String getPublishDate() {
return mPublishDate;
}
public void setPublishDate(String publishDate) {
mPublishDate = publishDate;
}
public String getArticleUrl() {
return mArticleUrl;
}
public void setArticleUrl(String articleUrl) {
mArticleUrl = articleUrl;
}
public String getTag() {
return mTag;
}
public void setTag(String tag) {
UrbLog.d(TAG,"setTag("+tag+")");
mTag = tag;
}
public boolean isCollection() {
return mCategoryId == Category.COLLECTION_ID;
}
public int getIsAddedInFavorites() {
return mIsAddedInFavorites;
}
public void setIsAddedInFavorites(int isAddedInFavorites) {
mIsAddedInFavorites = isAddedInFavorites;
}
public int getCategoryColor() {
return mCategoryColor;
}
public void setCategoryColor(int categoryColor) {
mCategoryColor = categoryColor;
}
public String getCuisine() {
return mCuisine;
}
public void setCuisine(String cuisine) {
mCuisine = cuisine;
}
public int getCategoryId() {
return mCategoryId;
}
public void setCategoryId(int categoryId) {
mCategoryId = categoryId;
}
}
I`m trying to unmarshal the parcelable in the fragment's onCreate method here
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) {
mArticle = args.getParcelable(Consts.ARTICLE_KEY);
}
}
Then not every time I received a crash with the following state:
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel#3348215c: Unmarshalling unknown type code 7602280 at offset 4068
at android.os.Parcel.readValue(Parcel.java:2222)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.Bundle.getParcelable(Bundle.java:804)
at com.appscollider.urbanologie.fragments.ArticleFragment.onCreate(ArticleFragment.java:233)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1766)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:917)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1120)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1924)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:268)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:58)
What is the reason for that exception and how I could fix it.
Thank you.
Your mAddressLatitude and mAddressLongitude are of type double and you are unmarshalling them as type float:
mAddressLatitude = in.readFloat();
mAddressLongitude = in.readFloat();
If you are writing it as double it should be:
mAddressLatitude = in.readDouble();
mAddressLongitude = in.readDouble();
I am currently trying to pass a parceablearraylist from mylogin activity to my main activity but getting a
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.muuves.introround/com.muuves.introround.activities.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel#41ef90a8: Unmarshalling unknown type code 7536741 at offset 684
Here are my parceable objects
public class Challenge implements Parcelable {
private Integer id;
private Integer challenger_id;
private Integer friend_id;
private String artist_name;
private String song_name;
private String image_url;
private String song_url;
private String answer_url;
private int challenge_attempts_left;
private int answer;
private Person person;
private Person friend;
public Challenge() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getChallenger_id() {
return challenger_id;
}
public void setChallenger_id(Integer challenger_id) {
this.challenger_id = challenger_id;
}
public Integer getFriend_id() {
return friend_id;
}
public void setFriend_id(Integer friend_id) {
this.friend_id = friend_id;
}
public String getArtist_name() {
return artist_name;
}
public void setArtist_name(String artist_name) {
this.artist_name = artist_name;
}
public String getSong_name() {
return song_name;
}
public void setSong_name(String song_name) {
this.song_name = song_name;
}
public String getImage_url() {
return image_url;
}
public void setImage_url(String image_url) {
this.image_url = image_url;
}
public String getSong_url() {
return song_url;
}
public void setSong_url(String song_url) {
this.song_url = song_url;
}
public String getAnswer_url() {
return answer_url;
}
public void setAnswer_url(String answer_url) {
this.answer_url = answer_url;
}
public int getChallenge_attempts_left() {
return challenge_attempts_left;
}
public void setChallenge_attempts_left(int challenge_attempts_left) {
this.challenge_attempts_left = challenge_attempts_left;
}
public int getAnswer() {
return answer;
}
public void setAnswer(int answer) {
this.answer = answer;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public Person getFriend() {
return friend;
}
public void setFriend(Person friend) {
this.friend = friend;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeInt(challenger_id);
dest.writeInt(friend_id);
dest.writeString(artist_name);
dest.writeString(image_url);
dest.writeString(song_url);
dest.writeString(answer_url);
dest.writeInt(challenge_attempts_left);
dest.writeInt(answer);
dest.writeParcelable(person, flags);
dest.writeParcelable(friend, flags);
}
public static final Parcelable.Creator<Challenge> CREATOR = new Parcelable.Creator<Challenge>() {
#Override
public Challenge createFromParcel(Parcel in) {
Challenge challenge = new Challenge();
challenge.setId(in.readInt());
challenge.setChallenger_id(in.readInt());
challenge.setFriend_id(in.readInt());
challenge.setArtist_name(in.readString());
challenge.setSong_name(in.readString());
challenge.setImage_url(in.readString());
challenge.setSong_url(in.readString());
challenge.setAnswer_url(in.readString());
challenge.setChallenge_attempts_left(in.readInt());
challenge.setAnswer(in.readInt());
challenge.setPerson((Person) in.readParcelable(Person.class.getClassLoader()));
challenge.setFriend((Person) in.readParcelable(Person.class.getClassLoader()));
return challenge;
}
#Override
public Challenge[] newArray(int size) {
return new Challenge[size];
}
};
}
public class Person implements Parcelable {
private int id;
private String first_name;
private String last_name;
private String image_url;
public Person(){
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirst_Name() {
return first_name;
}
public void setFirst_Name(String first_name) {
this.first_name = first_name;
}
public String getLast_Name() {
return last_name;
}
public void setLast_Name(String last_name) {
this.last_name = last_name;
}
public String getImage_url() {
return image_url;
}
public void setImage_url(String image_url) {
this.image_url = image_url;
}
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(first_name);
dest.writeString(last_name);
dest.writeString(image_url);
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
#Override
public Person createFromParcel(Parcel in) {
Person person = new Person();
person.setId(in.readInt());
person.setFirst_Name(in.readString());
person.setLast_Name(in.readString());
person.setImage_url(in.readString());
return person;
}
#Override
public Person[] newArray(int size) {
return null;
}
};
}
Login activity
#Override
public void preLoadDetails(Details details) {
Intent intent = new Intent(this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("receive", details.getReceive());
intent.putExtras(bundle);
startActivity(intent);
}
MainActivity
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = this.getIntent().getExtras();
ArrayList<Challenge> friends = bundle.getParcelableArrayList("receive");
mContent = new MainFragment(0);
mContent.setArguments(getIntent().getExtras());
// set the Above View
setContentView(R.layout.home_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, mContent).commit();
// set the Behind View
setBehindContentView(R.layout.menu_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new MenuFragment()).commit();
// Disable
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
}
Been trying to fix it for the pass day and getting no where all I know is that person parceable object in the challenge object are always null but they are not when I put them in the bundle.
Appreciate any input.
Those Integer type could be null or an int, you need to handle that situation properly.
For example I have utility functions like this :
static public Integer readInteger(Parcel in){
if(in.readInt() == 1){
return in.readInt();
}else{
return null;
}
}
static public void writeInteger(Integer value, Parcel out){
if(value != null){
out.writeInt(1);
out.writeInt(value);
}else{
out.writeInt(0);
}
}
First thing in the class Challenge you use Integer attributes and you parce "int" those are 2 diferents things.
Exemple of how i do things myself :
public Podcast(Parcel parcel) {
id = parcel.readLong();
title = parcel.readString();
subtitle = parcel.readString();
summary = parcel.readString();
duration = parcel.readString();
author = parcel.readString();
date = parcel.readString();
mp3 = parcel.readString();
podcastCategoryId = parcel.readLong();
}
#Override
public int describeContents() {
// not used
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(id);
dest.writeString(title);
dest.writeString(subtitle);
dest.writeString(summary);
dest.writeString(duration);
dest.writeString(author);
dest.writeString(date);
dest.writeString(mp3);
dest.writeLong(podcastCategoryId);
}
public static Creator<Podcast> CREATOR = new Creator<Podcast>() {
public Podcast createFromParcel(Parcel parcel) {
return new Podcast(parcel);
}
public Podcast[] newArray(int size) {
return new Podcast[size];
}
};
#Override
public Person[] newArray(int size) {
return null;
}
You should create there an array of that size and return it.
#Override
public Person[] newArray(int size) {
return new Person[size];
}
Solved it was actually very simple, forgot song url when i was writing to the parcel. Any when i missed that write that was why i was getting the weird exception for person object. it was expecting a person object but was getting something else. 1 day wasted oh well :(
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeInt(challenger_id);
dest.writeInt(friend_id);
dest.writeString(artist_name);
**dest.writeString(song_name);**
dest.writeString(image_url);
dest.writeString(song_url);
dest.writeString(answer_url);
dest.writeInt(challenge_attempts_left);
dest.writeInt(answer);
dest.writeParcelable(person, flags);
dest.writeParcelable(friend, flags);
}