2011-04-20 21 views
0

我正在將ArrayList<Custom implements Parcelable> myList傳遞給一個Intent。 以下兩種方式似乎都可以將ArrayList放入新的Intent中。在intent之間傳遞ArrayList會丟失數據

 results.putParcelableArrayListExtra("list", myList); 
     results.putExtra("list", myList); 

當我檢查mIntent/mExtras/mMap/table時,它就是一切。但在意圖的onCreate方法中,一些數據似乎丟失了。我收到的ArrayList然後用myList = (ArrayList<Custom>) this.getIntent().getParcelableArrayListExtra("list");

例如列表中包含五個項目[A],[B],[C],[d]和[E]:

put... get... 
[a] -> [a] 
[b] -> null 
[c] -> [b] 
[d] -> null 
[e] -> [c] 

似乎每新列表中的第二項並不打算,並佔用最後遺漏的一個地方。 你能告訴我我做錯了什麼嗎?

+2

我還沒有嘗試過這樣的事情之前......但沒有任何理由你沒有得到ArrayList與getParcelableArrayListExtra()而不是Serializable版本? – Maximus 2011-04-20 20:50:28

+0

這是一個錯誤。我將它改爲getParcelableArrayListExtra(),但不幸的是它沒有改變結果。 //編輯:在主文章中將getSerializableExtra()更改爲getParcelableArrayListExtra()。 – ShadowMare 2011-04-20 20:59:59

回答

1

試試這個我的朋友:

intent.putParcelableArrayListExtra("tag",yourObjectImplementsParceable); 

xxx = (ArrayList<yourClassImplementsParceable>) intent.getParcelableArrayListExtra("tag"); 

希望這有助於

+1

謝謝!幾乎我所做的,但似乎這個問題是用Android 4.0解決的。我真的不知道它是什麼。 – ShadowMare 2012-01-15 13:11:10

+0

你不能這樣。任何想法是什麼問題? – mrBorna 2012-03-18 19:56:18

1

嘗試檢索陣列

getIntent().getExtras().getParcelableArrayList(yourArray); 
+0

謝謝。我改爲getParcelableArrayListExtra(「list」);.不幸的是,它並沒有改變結果。我的自定義對象確實實現了Parcelable。 – ShadowMare 2011-04-20 20:53:57