Unten ist das Beispiel meiner Parcelable-Klasse. Wie Sie sehen können, möchte ich Aktivität in eine Parcel
setzen, aber wie könnte ich das tun? Ich schaue in den Quellcode von Activity
, es ist nicht Parcelable
noch Serializable
.Ist es möglich, Aktivität in das Paket zu legen?
public class MyParcelable implements Parcelable {
private Activity mActivity;
private int mData;
private String mName;
@Override
public void writeToParcel(Parcel out, int flags) {
//out.writeX(mActivity);
out.writeInt(mData);
out.writeString(mName);
}
private MyParcelable(Parcel in) {
//mActivity = in.readX();
mData = in.readInt();
mName = in.readString();
}
public MyParcelable(Activity activity, int data, String name) {
mActivity = activity;
mData = data;
mName = name;
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
@Override
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
@Override
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
}
Was ist nötig, um 'Aktivität' in Parzellen zu setzen? –
Nein, es macht auch nicht viel Sinn – Selvin
Was Sie wahrscheinlich tun möchten, ist die Aktivitätsklasse zu senden, können Sie ihren Namen als String senden. Eine Aktivität selbst ist nicht "nur eine Klasse", sie ist Teil eines größeren Systems zur Anzeige von Inhalten auf dem Bildschirm und enthält selbst nicht alles, was Sie selbst rekonstruieren müssen. – etan