在保存的实例中保存 ArrayList<String> 时出错
Error while saving ArrayList<String> in saved instance
实际上,我想将我的 LinkedList
保存在保存的实例中,这样当用户再次打开应用程序时,他可以访问已经存储在 LinkedList
中的内容。我知道我们需要将 LinkedList
转换为 ArrayList
以便存储它。保存 ArrayList
时出现错误
wrong 2nd argument type in putParcelableArrayList(). Found 'java.util.ArrayList<java.lang.String>
', required 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);
}
我知道有可用的解决方案,但似乎对我没有帮助。谢谢。
你得到那个异常是因为 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");
}
你需要这样做
ArrayList<String> arrayList = new ArrayList<String>(FavoriteQuotes);
savedInstanceState.putStringArrayList("key",arrayList );
实际上,我想将我的 LinkedList
保存在保存的实例中,这样当用户再次打开应用程序时,他可以访问已经存储在 LinkedList
中的内容。我知道我们需要将 LinkedList
转换为 ArrayList
以便存储它。保存 ArrayList
时出现错误
wrong 2nd argument type in putParcelableArrayList(). Found '
java.util.ArrayList<java.lang.String>
', requiredjava.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);
}
我知道有可用的解决方案,但似乎对我没有帮助。谢谢。
你得到那个异常是因为 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");
}
你需要这样做
ArrayList<String> arrayList = new ArrayList<String>(FavoriteQuotes);
savedInstanceState.putStringArrayList("key",arrayList );