[英]Sending a custom ArrayList through an Intent
我在使用自定義 ArrayList 並嘗試在活動之間移動它們時遇到問題。 首先,我在第一個活動中聲明了一個自定義 ArrayList:
private ArrayList<String[]> dataArray = new ArrayList<String[]>();
其中 ArrayList 的每個元素都是一個 String 元素數組。
接下來,我使用 putExtra() 將其放入意圖中:
Intent int1 = new Intent(this, ManualModeActivity.class);
int1.putExtra(EXTRA_MESSAGE, dataArray);
然后,當我嘗試在我的第二個活動中恢復 ArrayList 時,我發現ArrayList<String>
元素只有一個 getStringArrayListExtra() 方法,因此它不適用於ArrayList<String[]>
。 我一直在搜索這個,我找到的都是自定義對象的例子,其中解決方案是在它們上實現 Parcelable 或 Serialize 接口。 我怎么能用像 String[] 這樣的“默認”對象來做到這一點? (或者,由於我仍然是 Java 新手,我是否遺漏了一些關於接口如何工作的信息?)
如果 E 類型是Serializable
,您可以以相同的方式傳遞ArrayList<E>
。
您將調用putExtra (String name, Serializable value)
進行存儲,並getSerializableExtra (String name)
進行檢索。
例子:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
In the other Activity:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
您從第一個活動發送數據的代碼是正確的。
要在第二個活動中接收數據,請使用intent
的getSerializableExtra()
方法,例如:
ArrayList<String[]> data = (ArrayList<String[]>) getIntent().getSerializableExtra(EXTRA_MESSAGE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.