Add classloader for RtlCompatibleViewPager

To avoid BadParcelableException when reload the activity after it
is killed by OS.

Bug: 31707097
Test: make SettingsTests && adb install -r \
${OUT}/data/app/SettingsTests/SettingsTests.apk && \
adb shell am instrument -w \
'com.android.settings.tests/android.support.test.runner.AndroidJUnitRunner'

Change-Id: Ic8f20d9e2d236f0bea96071a88fbc6e7ba856f54
This commit is contained in:
jackqdyulei
2016-09-28 14:57:26 -07:00
parent eaec1622f5
commit 0bfee2799d
2 changed files with 93 additions and 5 deletions

View File

@@ -97,8 +97,8 @@ public final class RtlCompatibleViewPager extends ViewPager {
super(superState);
}
private RtlSavedState(Parcel in) {
super(in);
private RtlSavedState(Parcel in, ClassLoader loader) {
super(in, loader);
position = in.readInt();
}
@@ -108,11 +108,17 @@ public final class RtlCompatibleViewPager extends ViewPager {
out.writeInt(position);
}
public static final Parcelable.Creator<RtlSavedState> CREATOR
= new Parcelable.Creator<RtlSavedState>() {
public static final Parcelable.ClassLoaderCreator<RtlSavedState> CREATOR
= new Parcelable.ClassLoaderCreator<RtlSavedState>() {
@Override
public RtlSavedState createFromParcel(Parcel source,
ClassLoader loader) {
return new RtlSavedState(source, loader);
}
@Override
public RtlSavedState createFromParcel(Parcel in) {
return new RtlSavedState(in);
return new RtlSavedState(in, null);
}
@Override