Ich möchte meine Daten von Activity1 zu Activity2 mit putExtra senden.Serializable SparseArray <Benutzerdefiniertes Objekt>
My Custom-Objekt implementiert Serializable:
public class ARObjectCategory implements Serializable {
private static final long serialVersionUID = 3128594851129501738L;
public int id;
public String name;
public transient ARObjectCategory parent;
public transient SparseArray<ARObjectCategory> children;
public transient Bitmap iconBitmap = null;
public String icon;
private boolean active = false;
public ARObjectCategory(int id, String name, ARObjectCategory parent) {
this.id = id;
this.name = name;
this.parent = parent;
this.children = new SparseArray<>();
}
public void addChild(ARObjectCategory child) {
children.append(child.id, child);
if (getActive())
child.setActive(true);
}
public final ARObjectCategory getChild(int index) {
return children.valueAt(index);
}
public final SparseArray<ARObjectCategory> getChildren() {
return this.children;
}
public final int getParentLast() {
ARObjectCategory parentTemp = this.parent;
while (parentTemp.parent != null) {
parentTemp = parentTemp.parent;
}
return parentTemp.id;
}
public final ARObjectCategory getChildById(int id) {
return children.get(id, null);
}
public final int getChildrenCount() {
return children.size();
}
public Boolean getActive() {
return this.active;
}
public void setActive(Boolean bool) {
this.active = bool;
}
public Bitmap getIconBitmap() {
return iconBitmap;
}
public void setIconBitmap(Bitmap iconBitmap) {
this.iconBitmap = iconBitmap;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
Activity1.java (Sender):
ARObjectCategory test1= adapter.getItem(position);
Intent subCat= new Intent(getActivity(), SubCategoriesActivity.class);
subCat.putExtra("test",test1);
subCat.putExtra("selected",position);
startActivity(subCat);
auf Debug-Modus mein Objekt ok aussieht. SpraseArray hat ein Objekt von AROjcectCategory bekommen.
Activity2.java (Empfänger):
Bundle extras = getIntent().getExtras();
if (extras != null) {
int selected = extras.getInt("selected", -1);
ARObjectCategory list = (ARObjectCategory) extras.getSerializable("test");
SparseArray<ARObjectCategory> lista = list.getChildren();
}
Aber wenn ich die Activity2 debuggen. Ich sehe, dass mein SpraseArray von Kindern
Schließlich null ist, wenn ich die transiente aus meinen Objekten entfernen.
public transient ARObjectCategory parent;
public transient SparseArray<ARObjectCategory> children;
Ich erhalte die folgende Fehlermeldung auf meinem logcat:
java.lang.RuntimeException: Parcel IOException aufgetreten Schreiben serialisierbares Objekt (name = com.ethos.ar.core.ARObjectCategory) ........
verursacht durch: java.io.NotSerializableException: android.util.SparseArray ......
W Hat ist der richtige Weg, Objekte mit SpraseArray an andere Aktivitäten zu senden.
Tipps: Parcel nicht funktioniert:
dest.writeParcelable(this.children);
SparseArray<ARObjectCategory> cannot be converted to SparseArray<Object>
Dank