1 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
在學(xué)習(xí) Java 時(shí),我們被教導(dǎo)在聲明變量時(shí)使用接口類型( List) 而不是實(shí)現(xiàn)類型( )。ArrayList您可能在某處有如下代碼:
List<ShelfItem> shelfItems = new ArrayList<>();
但是,在特定情況下Bundle和保存列表中,您必須專門使用ArrayList,而不是List一般使用。
如果我是對(duì)的,并且您的列表像我上面顯示的那樣聲明,只需將其更改為顯式使用ArrayList:
ArrayList<ShelfItem> shelfItems = new ArrayList<>();
如果您從其他地方獲取列表,并且您無法控制它的實(shí)現(xiàn)類型,則可以new ArrayList在需要保存時(shí)構(gòu)造 a :
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
ArrayList<ShelfItem> toSave = new ArrayList<>(shelfItems);
savedInstanceState.putParcelableArrayList("key", toSave);
}
添加回答
舉報(bào)