1
我擴展了android.widget.Spinner。並在我的實現中添加了一個int字段。現在我想讓它保存方向更改的字段值。我首先想到的是用Bundle對象爲:如何保存自定義微調器狀態
override fun onSaveInstanceState(): Parcelable {
val bundle = Bundle()
bundle.putParcelable(SUPER_STATE, super.onSaveInstanceState())
bundle.putInt(PREV_ITEM, this.prevItem) // ... save stuff
return bundle
}
override fun onRestoreInstanceState(state: Parcelable?) {
val newState: Parcelable
if (state is Bundle) {
this.prevItem = state.getInt(PREV_ITEM) // ... load stuff
newState = state.getParcelable<Parcelable>(SUPER_STATE)
super.onRestoreInstanceState(newState)
}
super.onRestoreInstanceState(state)
}
但我得到一個錯誤:
java.lang.ClassCastException: android.os.Bundle cannot be cast to android.widget.Spinner$SavedState
所以我發現微調source code和想通了,我不得不延長內部靜態類SavedState並使用它保存我的字段值。但我無法做到這一點。 Android Studio建議它「無法解析符號'保存狀態'」。
那麼我該如何保存自定義Spinner的狀態?
的更好的方法是使用一個靜態值,並分配所選擇的位置,以靜態值和設定在的onResume方法該值。 –