ClassCastException occurs randomly to restore Vector in onRestoreInstanceState().
Generally restoring vector is finished well, but sometimes exception occurs.
I think it happens when activity is went to background and destroyed but I’m not sure.
Any ideas? Thank you.
Stack<LocationInfo> mLocationInfoVector;
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putSerializable("locationInfos", mLocationInfoVector);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if (savedInstanceState.getSerializable("locationInfos") != null) {
@SuppressWarnings("unchecked")
mLocationInfoVector= (Stack<LocationInfo>) savedInstanceState.getSerializable("locationInfos");
}
super.onRestoreInstanceState(savedInstanceState);
}
ADDED:
I forgot to attach exception log.
That is
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Stack
I use next code to restore Vector:
It prevents java.lang.ClassCastException and saves elements order.
To restore Stack, you can use next code:
It works due to Vector, Stack, ArrayList are extending Collection, and you can cast your serialized object to Collection and pass to Stack or Vector addAll() method.