Предположим, вы хотите получить свой собственный класс View из существующей реализации View, добавив немного значения, и, следовательно, поддерживая несколько переменных, которые представляют ваше состояние View значимым образом.
Было бы неплохо, если бы ваш View автоматически сохранил свое состояние, как это делают другие (если ID назначен), поэтому вы хотите переопределить onRestoreInstanceState()
и onSaveInstanceState()
.
Конечно, вам нужно вызвать соответствующие методы вашего базового класса, и вам нужно совместить информацию о состоянии с базовым классом.
Очевидно, единственный безопасный способ сделать это - обернуть суперкласс 'Parcelable
в собственный Parcelable
, чтобы ключи не смешивались.
Теперь View.BaseSavedState
и его интересный метод getSuperState()
, но я почему-то не понимаю, как это действительно добавляет ценность только для хранения базового класса Parcelable
в Bundle
вместе с полученными значениями состояния View и вернуть их. С другой стороны, может быть, какой-то другой системный компонент будет ожидать, что вся информация экземпляра InstanceState будет иметь тип View.AbsSavedState
(например, такой, что getSuperState()
можно вызвать)?
Любой опыт, который вы готовы поделиться?