我正在觀察將行爲數據傳遞給intent extra的行爲,這很奇怪,我只是想澄清一下我是不是錯過了。LinkedList放入Intent extra在下次活動中獲取時重新獲取ArrayList
所以我試圖做的事情是,在ActivtyA
我把LinkedList
實例放入我開始下一個活動產生的intent
- ActivityB
。
LinkedList<Item> items = (some operation);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra(AppConstants.KEY_ITEMS, items);
在ActivityB
的onCreate
,我試圖找回LinkedList
額外如下 -
LinkedList<Item> items = (LinkedList<Item>) getIntent()
.getSerializableExtra(AppConstants.KEY_ITEMS);
在運行此,我反覆在ActivityB
得到了ClassCastException
,在上面就行了。基本上,例外說我收到一個ArrayList
。一旦我將上面的代碼更改爲接收ArrayList
,則一切正常。
現在我不能從現有的文檔中弄清楚,在傳遞可串行化的List實現時,這是否是Android上的預期行爲。或者,也許,我在做什麼有一些根本性的錯誤。
謝謝。
改爲使用Parcelable。 –
,但是有什麼特別的原因讓'LinkedList'發生這種行爲,而如果我在'intent'上添加了'ArrayList'實例作爲額外的數據,那麼一切都會好的。而且,我不需要使用Parcelable? – anirvan
對於有趣的問題+1。我花了一些時間思考這個問題,並且非常感興趣,我去了解自己。現在你和我都更聰明瞭(看我的答案)。 –