Skip to content
This repository was archived by the owner on Aug 22, 2020. It is now read-only.

Commit 958430e

Browse files
committed
Fix instance state's saving/restoring process
Signed-off-by: Fung Gwo <[email protected]>
1 parent 1ab2900 commit 958430e

File tree

1 file changed

+40
-31
lines changed

1 file changed

+40
-31
lines changed

library/src/main/java/moe/feng/common/stepperview/VerticalStepperItemView.java

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package moe.feng.common.stepperview;
22

33
import android.animation.LayoutTransition;
4-
import android.animation.ObjectAnimator;
54
import android.animation.ValueAnimator;
6-
import android.annotation.SuppressLint;
75
import android.content.Context;
86
import android.content.res.TypedArray;
97
import android.graphics.PorterDuff;
108
import android.graphics.drawable.Drawable;
119
import android.os.Build;
12-
import android.os.Bundle;
10+
import android.os.Parcel;
1311
import android.os.Parcelable;
1412
import android.support.annotation.*;
1513
import android.text.TextUtils;
@@ -757,71 +755,82 @@ public void setErrorColorResource(@ColorRes int colorRes) {
757755
// Save/Restore View Instance State
758756
@Override
759757
public Parcelable onSaveInstanceState() {
760-
Bundle bundle = new Bundle();
761758
ItemViewState state = new ItemViewState(super.onSaveInstanceState());
762759
state.title = mTitle;
763760
state.summary = mSummary;
764761
state.summaryFinished = mSummaryFinished;
765762
state.index = mIndex;
766763
state.isLastStep = isLastStep;
767764
state.state = mState;
768-
state.animationDuration = mAnimationDuration;
769-
state.normalColor = mNormalColor;
770-
state.activatedColor = mActivatedColor;
771-
state.doneIcon = mDoneIcon;
772765
state.errorText = mErrorText;
773-
state.lineColor = mLineColor;
774-
state.errorColor = mErrorColor;
775-
state.alwaysShowSummary = mAlwaysShowSummary;
776-
bundle.putParcelable(ItemViewState.STATE, state);
777-
return bundle;
766+
return state;
778767
}
779768

780769
@Override
781770
public void onRestoreInstanceState(Parcelable state) {
782-
if (state instanceof Bundle) {
783-
Bundle bundle = (Bundle) state;
784-
ItemViewState viewState = bundle.getParcelable(ItemViewState.STATE);
771+
if (state instanceof ItemViewState) {
772+
ItemViewState viewState = (ItemViewState) state;
785773
super.onRestoreInstanceState(viewState.getSuperState());
786774
setTitle(viewState.title);
787775
setSummary(viewState.summary);
788776
setSummaryFinished(viewState.summaryFinished);
789777
setIndex(viewState.index);
790778
setIsLastStep(viewState.isLastStep);
791779
setState(viewState.state);
792-
setAnimationDuration(viewState.animationDuration);
793-
setNormalColor(viewState.normalColor);
794-
setActivatedColor(viewState.activatedColor);
795-
setDoneIcon(viewState.doneIcon);
796780
setErrorText(viewState.errorText);
797-
setLineColor(viewState.lineColor);
798-
setErrorColor(viewState.errorColor);
799-
setAlwaysShowSummary(viewState.alwaysShowSummary);
800781
return;
801782
}
802783
super.onRestoreInstanceState(BaseSavedState.EMPTY_STATE);
803784
}
804785

805786
protected static class ItemViewState extends BaseSavedState {
806787

807-
private static final String STATE = VerticalStepperItemView.class.getSimpleName() + ".STATE";
808-
809788
CharSequence title, summary, summaryFinished;
810789
int index = 1;
811790
boolean isLastStep = false;
812791
int state = STATE_NORMAL;
813792
CharSequence errorText;
814793

815-
int animationDuration;
816-
int normalColor, activatedColor, lineColor, errorColor;
817-
Drawable doneIcon;
818-
819-
boolean alwaysShowSummary;
820-
821794
ItemViewState(Parcelable superState) {
822795
super(superState);
823796
}
824797

798+
private ItemViewState(Parcel in) {
799+
super(in);
800+
title = in.readString();
801+
summary = in.readString();
802+
summaryFinished = in.readString();
803+
index = in.readInt();
804+
isLastStep = in.readByte() != 0;
805+
state = in.readInt();
806+
errorText = in.readString();
807+
}
808+
809+
@Override
810+
public void writeToParcel(Parcel out, int flags) {
811+
super.writeToParcel(out, flags);
812+
out.writeString(title != null ? title.toString() : null);
813+
out.writeString(summary != null ? summary.toString() : null);
814+
out.writeString(summaryFinished != null ? summaryFinished.toString() : null);
815+
out.writeInt(index);
816+
out.writeByte(isLastStep ? (byte) 1 : (byte) 0);
817+
out.writeInt(state);
818+
out.writeString(errorText != null ? errorText.toString() : null);
819+
}
820+
821+
public static final Parcelable.Creator<ItemViewState> CREATOR =
822+
new Parcelable.Creator<ItemViewState>() {
823+
@Override
824+
public ItemViewState createFromParcel(Parcel source) {
825+
return new ItemViewState(source);
826+
}
827+
828+
@Override
829+
public ItemViewState[] newArray(int size) {
830+
return new ItemViewState[size];
831+
}
832+
};
833+
825834
}
826835

827836
private static boolean isPreLollipop() {

0 commit comments

Comments
 (0)