У меня есть пользовательская ViewGroup, расширяющая FrameLayout. При изменении ориентации мне нужно сохранить одно значение int. Я переопределяю onSaveInstanceState()
и onRestoreInstanceState(Parcelable state)
, чтобы сохранить старое значение. Мой код приведен ниже
@Override
protected Parcelable onSaveInstanceState() {
final Bundle bundle = new Bundle();
bundle.putInt(POSITION, position);
return bundle;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
mPosition = bundle.getInt(POSITION);
}
super.onRestoreInstanceState(state);
}
Но у меня сбой.
java.lang.IllegalStateException: Derived class did not call super.onSaveInstanceState()
Но если я вызову super.onSaveInstanceState()
на onSaveInstanceState
, как я могу вернуть значение моего пакета?
В чем проблема?
Заранее спасибо!!
onRestoreInstanceState
снова произойдет сбой. В тот момент, когда я вызываю `super.onRestoreInstanceState(state);`, я получаю сообщение об ошибкеCaused by: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.os.Bundle instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/frm. Make sure other views do not use the same id.
- person   schedule 27.02.2017