实际上,我想将LinkedList
保存在已保存的实例中,因此当用户再次打开应用程序时,他可以访问LinkedList
中已经存储的内容。我知道我们需要将LinkedList
转换为ArrayList
才能存储它。保存ArrayList
时出现错误
putParcelableArrayList()中的第二个参数类型错误。找到了“
java.util.ArrayList<java.lang.String>
,必须java.util.ArrayList<?extends android.os.Parcelable>
。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
ArrayList<String> arrayList = new ArrayList<String>(FavoriteQuotes);
savedInstanceState.putParcelableArrayList("quotes",arrayList);
}
我知道有可用的解决方案,但似乎并没有帮助我。谢谢。
答案 0 :(得分:2)
您需要这样做
ArrayList<String> arrayList = new ArrayList<String>(FavoriteQuotes);
savedInstanceState.putStringArrayList("key",arrayList );
答案 1 :(得分:0)
由于FavoriteQuotes
未实现Parcelable
接口,因此您将收到该异常。
ArrayList
和LinkedList
都实现了Serializable
接口,这意味着可以更轻松地直接持久保存LinkedList
。
假设FavoriteQuotes
是字符串的LinkedList
:
Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putSerializable("quotes", FavoriteQuotes);
}
还原时,您需要调用getSerializable
,并将其转换回其原始类型:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
FavoriteQuotes = (LinkedList) savedInstanceState.getSerializable("quotes");
}