将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); }