diff --git a/app/src/main/java/org/isoron/uhabits/activities/common/views/BundleSavedState.java b/app/src/main/java/org/isoron/uhabits/activities/common/views/BundleSavedState.java index b5011b03c..6f9e1163d 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/common/views/BundleSavedState.java +++ b/app/src/main/java/org/isoron/uhabits/activities/common/views/BundleSavedState.java @@ -20,24 +20,27 @@ package org.isoron.uhabits.activities.common.views; import android.os.*; +import android.support.v4.os.*; public class BundleSavedState extends android.support.v4.view.AbsSavedState { public static final Parcelable.Creator CREATOR = - new Parcelable.Creator() - { - @Override - public BundleSavedState createFromParcel(Parcel source) + ParcelableCompat.newCreator( + new ParcelableCompatCreatorCallbacks() { - return new BundleSavedState(source, getClass().getClassLoader()); - } + @Override + public BundleSavedState createFromParcel(Parcel source, + ClassLoader loader) + { + return new BundleSavedState(source, loader); + } - @Override - public BundleSavedState[] newArray(int size) - { - return new BundleSavedState[size]; - } - }; + @Override + public BundleSavedState[] newArray(int size) + { + return new BundleSavedState[size]; + } + }); public final Bundle bundle; @@ -50,7 +53,7 @@ public class BundleSavedState extends android.support.v4.view.AbsSavedState public BundleSavedState(Parcel source, ClassLoader loader) { super(source, loader); - this.bundle = source.readBundle(getClass().getClassLoader()); + this.bundle = source.readBundle(loader); } @Override diff --git a/app/src/main/java/org/isoron/uhabits/activities/common/views/ScrollableChart.java b/app/src/main/java/org/isoron/uhabits/activities/common/views/ScrollableChart.java index 8b54b324f..c488cb17a 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/common/views/ScrollableChart.java +++ b/app/src/main/java/org/isoron/uhabits/activities/common/views/ScrollableChart.java @@ -107,6 +107,12 @@ public abstract class ScrollableChart extends View @Override public void onRestoreInstanceState(Parcelable state) { + if(!(state instanceof BundleSavedState)) + { + super.onRestoreInstanceState(state); + return; + } + BundleSavedState bss = (BundleSavedState) state; int x = bss.bundle.getInt("x"); int y = bss.bundle.getInt("y"); diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.java index bc784465e..cd6f24dbe 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardListView.java @@ -153,6 +153,12 @@ public class HabitCardListView extends RecyclerView @Override protected void onRestoreInstanceState(Parcelable state) { + if(!(state instanceof BundleSavedState)) + { + super.onRestoreInstanceState(state); + return; + } + BundleSavedState bss = (BundleSavedState) state; dataOffset = bss.bundle.getInt("dataOffset"); super.onRestoreInstanceState(bss.getSuperState());