2013-01-31 40 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。 –