将List作为ParcelableArrayList传递

所以嘿伙计们,我在使用某些代码时遇到了一些麻烦。 我正在实施parcelables。 基本上我有一个全球发起的项目清单

private List mMovieList = new ArrayList(); 

并且我希望将其作为parcellable传递给旋转时保存实例状态。 我实现了saveOnInstanceState方法和onCreate

 public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelableArrayList(MOVIE_KEY, (ArrayList)mMovieList); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); if (savedInstanceState != null) { mMovieList = (List)savedInstanceState.get(MOVIE_KEY); } } 

唯一的问题是它抛出错误,错误指向outstate.putParcelableArrayList行。

 java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList 

有没有人知道修复或解决这个问题? 我尝试使用谷歌搜索并查看其他stackoverflow答案,但无法找到一个有效。

这是项目的GitHub链接,如果有人想要查看它的全部内容,上面提到的方法尚未提交。 https://github.com/Rykuno/Flix-Viewer

可悲的是Android并没有“编程到界面”。 如果List不是ArrayList那么你将别无选择,只能创建一个新的ArrayList 。 这不是什么大问题,可以通过编程方式完成。

 public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); ArrayList toSave = mMovieList instanceof ArrayList ? (ArrayList)mMovieList : new ArrayList(mMovieList); outState.putParcelableArrayList(MOVIE_KEY, toSave); }