的設置ClassNotFoundException的上序列化類開始
我)的活動,只有覆蓋的onCreate()的onResume(和的onSaveInstanceState()。在的onSaveInstanceState(),我把一個序列化對象:
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putSerializable("obj", myObj); // myObj is of class MyClass state.putLong("long", longVar);
}
MyClass的本來是活動類中的內部類,但對於調試,我甚至把它移到一個單獨的文件:
public class MyClass implements Serializable {
private static final long serialVersionUID = 0x98ED2F00;
....
}
步驟:
- 開始在通常的方法程序,它運行良好。
- 單擊主頁按鈕返回到啓動器。
- 在Eclipse中,在設備面板
啓動該程序再次從啓動停止的過程中,這個時候我得到以下幾點:
了java.lang.RuntimeException:無法啓動活動ComponentInfo {com。示例.Reports}:java.lang.RuntimeException Parcelable遇到ClassNotFoundException,讀取一個可序列化的對象{name = com.example.MyClass}
引起:java.lang.ClassNotFoundException:com.examp.MyClass在loader中dalvik.System.PathClassLoader [。]
線索和觀察:
最重要的線索是:如果我不救MyObj中的onSaveInstanceState中的(),然後一切都很好。而且,將任何原始類型放入Bundle都很好,但不是我的對象。
例外是我的代碼外扔,它發生的onCreate()和之間的onResume()。它發生在Android內部。
錯誤消息類名是正確的:com.example.MyClass。最初它是活動內的一個內部類,但爲了隔離問題,我將它移到了一個單獨的文件中,但是沒有用。
我認爲序列化的實施是正確的,因爲它可以從程序的其他部分文件被序列化到/。
有沒有人有任何可能的原因這樣的想法?非常感激! (對不起,我不能把詳細的代碼在這裏,因爲一切都在這裏交織和那裏。我只能分離出儘可能多的。)
非常感謝您回來並報告您的解決方案。我無法想象要花多長時間才能弄清楚這一點,這一點並不明顯 – HXCaine 2011-11-10 20:48:45