diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java index 45fc6c3d4c7aa..3796df78ff7fc 100644 --- a/core/java/android/widget/SearchView.java +++ b/core/java/android/widget/SearchView.java @@ -36,6 +36,8 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; import android.speech.RecognizerIntent; import android.text.Editable; import android.text.InputType; @@ -1332,6 +1334,48 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { setIconified(false); } + static class SavedState extends BaseSavedState { + boolean isIconified; + + SavedState(Parcelable superState) { + super(superState); + } + + public SavedState(Parcel source) { + super(source); + isIconified = (Boolean) source.readValue(null); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeValue(isIconified); + } + + @Override + public String toString() { + return "SearchView.SavedState{" + + Integer.toHexString(System.identityHashCode(this)) + + " isIconified=" + isIconified + "}"; + } + } + + @Override + protected Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + SavedState ss = new SavedState(superState); + ss.isIconified = isIconified(); + return ss; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + super.onRestoreInstanceState(ss.getSuperState()); + updateViewsVisibility(ss.isIconified); + requestLayout(); + } + @Override public CharSequence getAccessibilityClassName() { return SearchView.class.getName();