2013-01-31 42 views
2

我在实现Android中的Parcelable类时遇到了问题。Android Parcelable问题

我遇到的问题是,我收到的是BinarySearchTree无法转换为TreeNode。

当我打印出什么类型时,我收到它说树节点,所以我不完全确定问题是什么。

这是错误

01-31 18:13:50.986: E/AndroidRuntime(1059): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.discoverycalendar/com.discoverycalendar.DiscoveryMainMenu}: 
java.lang.ClassCastException: com.DiscoveryUtils.BinarySearchTree cannot be cast to com.DiscoveryObjects.TreeNode 

private TreeNode root = null; 


@Override 
public int describeContents() { 

    return 0; 
} 

public BinarySearchTree(Parcel in){ 

    this(); 
    root = (TreeNode) in.readValue(TreeNode.class.getClassLoader()); 
    in.readStringList(treeCont); 
    in.readStringList(treeAsString); 
} 

public static final Creator<BinarySearchTree> CREATOR = new Creator<BinarySearchTree>() { 

    public BinarySearchTree createFromParcel(Parcel source) { 

     return new BinarySearchTree(source); 
    } 

    public BinarySearchTree[] newArray(int size) { 

     return new BinarySearchTree[size]; 
    } 
}; 

@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeValue(root); 
    dest.writeStringList(treeCont); 
    dest.writeStringList(treeAsString); 
} 

当我尝试铸造的返回值到一个TreeNode我收到错误。我不知道为什么它认为它是一个不同的对象。

+0

如果你已经解决了这个问题,你可能想接受一个答案,如果这有助于或发布你的解决方案来帮助他人。 – wtsang02

回答

0

原因很简单,TreeNodeSerializable或Parcelable。因此,您需要制作一个自定义类来扩展TreeNode并推动其中的一个以平整数据。 这是支持类型的document。 TreeNode不在那里。

-1

公共静态最终造物主 ,如果它可能是它需要具有相同的构造和态射也因为它是不一样的包,你将需要上溯造型到一个对象第一 例如

//.... 
Object treeinst = (Object) BinarySearchTree[x]; 
TreeNode treet = (TreeNode) treeinst; 
return treet; 
+1

这不会解决任何问题。类型转换为对象是无用的,因为所有的类都扩展了Object。 –