You're looking for Parcelable
.
A simpler, though non optimal solution is Serializable
.
Snippet:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
Usage:
// Sender class
MyParcelable mp = new MyParcelable();
intent.putExtra("KEY_PARCEL", mp);
// Receiver class
Bundle data = getIntent().getExtras();
MyParcelable student = (Myparcelable)data.getParcelable("KEY_PARCEL");
Here's a working example.
EDIT: Here's how to do it with fragments.
// Receiver class
Bundle data = getIntent().getExtras();
public class MyFragment extends Fragment {
public static MyFragment newInstance(int index, Bundle data) {
MyFragment f = new MyFragment();
data.putInt("index", index);
f.setArguments(data);
return f;
}
}
// In the fragment
Bundle data = getArguments();