Я написал собственное представление, которое расширяет LinearLayout. Он содержит два представления: «заголовок» и «тело». Пользовательское представление поддерживает «расширенное» состояние, которое включается и выключается при каждом щелчке по представлению заголовка. Когда оно расширено, тело ВИДИМО, а когда не расширено, тело УЖЕ. Я хочу сохранить расширенное состояние этого представления при изменении ориентации устройства, поэтому я написал onSaveInstanceState и onRestoreInstanceState, чтобы сохранить расширенный флаг.
Одна из проблем заключается в том, что если я переориентирую устройство при развертывании любого из этих видов, то все действия перерисовываются без изменения ориентации видов. (Если я переключаюсь с портретного на горизонтальный, экран остается в портретном режиме.) Если ни одно из пользовательских видов не раскрывается, дерево представления действия корректно переориентируется.
Вот моя логика для представления onRestoreInstanceState:
protected void onRestoreInstanceState(Parcelable state) {
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
if (ss.expanded != mHeader.isExpanded()) {
mHeader.toggleExpanded();
}
mBody.setVisibility(ss.expanded ? VISIBLE : GONE);
}
Что я делаю не так?