diff options
| author | Aurimas Liutikas <aurimas@google.com> | 2015-11-17 14:28:04 -0800 |
|---|---|---|
| committer | Aurimas Liutikas <aurimas@google.com> | 2015-11-17 14:52:44 -0800 |
| commit | e3fa17647297fae8266aca4cce9a17f9e36e3e7c (patch) | |
| tree | 0504136edae32aceafc48b025ecc1a6970adcfbb /core/java/android/widget/CheckedTextView.java | |
| parent | a87401054fc6960c4b0ac2d361ddbcf415350b33 (diff) | |
Start saving CheckedTextView checked state.
Match the behavior of other widgets and start saving
CheckedTextView checked state.
Bug: 25720678
Change-Id: I8c3df3a67f4cea848320e6075066516857d8cddf
Diffstat (limited to 'core/java/android/widget/CheckedTextView.java')
| -rw-r--r-- | core/java/android/widget/CheckedTextView.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index a018d2644eab..9f94005ff778 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -28,6 +28,8 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; +import android.os.Parcel; +import android.os.Parcelable; import android.util.AttributeSet; import android.view.Gravity; import android.view.RemotableViewMethod; @@ -447,6 +449,68 @@ public class CheckedTextView extends TextView implements Checkable { return CheckedTextView.class.getName(); } + static class SavedState extends BaseSavedState { + boolean checked; + + /** + * Constructor called from {@link CheckedTextView#onSaveInstanceState()} + */ + SavedState(Parcelable superState) { + super(superState); + } + + /** + * Constructor called from {@link #CREATOR} + */ + private SavedState(Parcel in) { + super(in); + checked = (Boolean)in.readValue(null); + } + + @Override + public void writeToParcel(Parcel out, int flags) { + super.writeToParcel(out, flags); + out.writeValue(checked); + } + + @Override + public String toString() { + return "CheckedTextView.SavedState{" + + Integer.toHexString(System.identityHashCode(this)) + + " checked=" + checked + "}"; + } + + public static final Parcelable.Creator<SavedState> CREATOR + = new Parcelable.Creator<SavedState>() { + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } + + @Override + public Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + + SavedState ss = new SavedState(superState); + + ss.checked = isChecked(); + return ss; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + + super.onRestoreInstanceState(ss.getSuperState()); + setChecked(ss.checked); + requestLayout(); + } + /** @hide */ @Override public void onInitializeAccessibilityEventInternal(AccessibilityEvent event) { |
