2011-06-22 87 views

回答

1

它取決於數組列表中的對象的類型。如果你有控制權並可以實現Parcelable,那麼你可以使用Intent.putParcelableArrayListExtra

另一種方法是擴展應用程序並將ArrayList存儲在那裏。然後它不需要在Intent中傳遞,並且應用程序中的所有活動都可以通過調用getApplication()來訪問它。應用程序對象將在應用程序的整個生命週期中保持不變,其中存儲的任何數據也一樣。

編輯:

使用應用程序對象是:

  1. 寫一個類(姑且稱之爲MyApplication)擴展android.app.Application。聲明一個字段(我們稱之爲array)來保存你的數組列表。
  2. 在清單的<application>標記中指定名稱MyApplication。當系統爲您的應用程序創建流程時,將會創建一個MyApplication的實例。
  3. 任何希望訪問該字段的活動都可以使用((MyApplication) getApplication()).array。你在第一個活動中初始化它,並在第二個活動中檢索它。

另一種完全不同的方法是在某個類中聲明靜態單例。該文檔實際上推薦這比子類化應用程序更模塊化。這是一種破解,因爲它基本上是聲明一個全局變量。但是我認爲這不比將一個隨機數據放入一個Application對象中更麻煩。

+0

我沒有控制它,所以我不得不放棄第一種方法。 我沒有得到第二種方法。如何擴展應用程序並存儲ArrayList。如何使用getApplication()?你能舉個例子嗎? – wzb5210

+0

@ wzb5210 - 我已經用一些細節更新了我的答案。 –

+0

非常感謝!我會試着看看它是否有效。 – wzb5210

0
Intent intent = new Intent(this, TargetActivity.class); 
intent.putExtra("nameOfArray",YOUR_ARRAY_LIST); 
startActivity(intent); 
+0

putExtra似乎只能正常工作很少的值。你確定它也適用於ArrayList嗎? – wzb5210

+0

public Intent putExtra(String name,Serializable value)它說它需要一個Serializable和一個ArrayList是一個序列化... –

相關問題