I segued this tutorial to pass custom object by Intent.
I have 2 fragments(fragmentA, fragmentB) and they are in 2 activities(activityA, activityB)
If I use mIntent.putExtra("event","event"); startActivity(mIntent) works fine and the app shows the right page.
But when I have Parcelable object, startActivity(mIntent) seems don't have any effort, app restart without any error.
code for my custom object which implements Parcelable:
import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;
public class EventParcelable implements Parcelable {
private int eventId;
private String title;
private String abstract_;
private String description;
private Bitmap image;
private String referenceFirstName;
private String referenceLastName;
private String referenceEmail;
private String referencePhone;
private String referenceMobile;
private int vote;
private int companyId;
public int getEventId(){
return eventId;
}
public void setEventId(int eventId){
this.eventId = eventId;
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title = title;
}
public String getAbstract_(){
return abstract_;
}
public void setAbstract_(String abstract_){
this.abstract_ = abstract_;
}
public String getDescription(){
return description;
}
public void setDescription(String description){
this.description = description;
}
public Bitmap getImage(){
return image;
}
public void setImage(Bitmap image){
this.image = image;
}
public String getReferenceFirstName(){
return referenceFirstName;
}
public void setReferenceFirstName(String referenceFirstName){
this.referenceFirstName = referenceFirstName;
}
public String getReferenceLastName(){
return referenceLastName;
}
public void setReferenceLastName(String referenceLastName){
this.referenceLastName = referenceLastName;
}
public String getReferenceEmail(){
return referenceEmail;
}
public void setReferenceEmail(String referenceEmail){
this.referenceEmail = referenceEmail;
}
public String getReferencePhone(){
return referencePhone;
}
public void setReferencePhone(String referencePhone){
this.referencePhone = referencePhone;
}
public String getReferenceMobile(){
return referenceMobile;
}
public void setReferenceMobile(String referenceMobile){
this.referenceMobile = referenceMobile;
}
public int getVote(){
return vote;
}
public void setVote(int vote){
this.vote = vote;
}
public int getCompanyId(){
return companyId;
}
public void setCompanyId(int companyId){
this.companyId = companyId;
}
public static final Creator<Event> CREATOR = new Creator<Event>() {
@Override
public Event createFromParcel(Parcel source) {
Event mEvent = new Event();
mEvent.eventId = source.readInt();
mEvent.title = source.readString();
mEvent.abstract_ = source.readString();
mEvent.description = source.readString();
mEvent.image = source.readParcelable(null);
mEvent.referenceFirstName = source.readString();
mEvent.referenceLastName = source.readString();
mEvent.referenceEmail = source.readString();
mEvent.referencePhone = source.readString();
mEvent.referenceMobile = source.readString();
mEvent.vote = source.readInt();
mEvent.companyId = source.readInt();
return mEvent;
}
@Override
public Event[] newArray(int size) {
return new Event[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.eventId);
dest.writeString(this.title);
dest.writeString(this.abstract_);
dest.writeString(this.description);
dest.writeValue(this.image);
dest.writeString(this.referenceFirstName);
dest.writeString(this.referenceLastName);
dest.writeString(this.referenceEmail);
dest.writeString(this.referencePhone);
dest.writeString(this.referenceMobile);
dest.writeInt(this.vote);
dest.writeInt(this.companyId);
}
}
code for fragmentA which is in activityA to pass the data:
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Event event = adapter.getItem(position);
EventParcelable mEventParcelable = new EventParcelable();
mEventParcelable.setEventId(event.eventId);
mEventParcelable.setTitle(event.title);
mEventParcelable.setAbstract_(event.abstract_);
mEventParcelable.setDescription(event.description);
mEventParcelable.setImage(event.image);
mEventParcelable.setReferenceFirstName(event.referenceFirstName);
mEventParcelable.setReferenceLastName(event.referenceLastName);
mEventParcelable.setReferenceEmail(event.referenceEmail);
mEventParcelable.setReferencePhone(event.referencePhone);
mEventParcelable.setReferenceMobile(event.referenceMobile);
mEventParcelable.setVote(event.vote);
mEventParcelable.setCompanyId(event.companyId);
Intent mIntent = new Intent(getActivity(), TabbedActivityEvent.class);
mIntent.putExtra("event", mEventParcelable);
startActivity(mIntent);
}
});
code for fragmentB in activityB to get the passed data:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.listeventdescription_fragment,container,false);
EventParcelable event1 = (EventParcelable) getActivity().getIntent().getParcelableExtra("event");
Log.d("result",event1.getTitle());
return view;
}
0 comments:
Post a Comment