activity的onRestoreInstanceState 方法抛出This usually happens when two views of different type have the same id in the same hierarchy
protected void onRestoreInstanceState(Bundle savedInstanceState)
注意检查当前界面自定义view
onSaveInstanceState() 以及onRestoreInstanceState(Parcelable state)方法
参考如下(不要使用网上说的可以用bundle的方式,那样照样闪退)
@Override
protected Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
SavedState savedState = new SavedState(superState);
savedState.textColor = getTextColor();
savedState.progressSize = getProgressTextSize();
savedState.reachedBarHeight = getReachedBarHeight();
savedState.unReachedBarHeight = getUnreachedBarHeight();
savedState.reachedBarColor = getReachedBarColor();
savedState.unReachedBarColor = getUnreachedBarColor();
savedState.max = getMax();
savedState.progress = getProgress();
savedState.suffix = getSuffix();
savedState.prefix = getPrefix();
savedState.progressTextVisibile = getProgressTextVisibility() == true ? 1 : 0;
return savedState;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
SavedState savedState = (SavedState) state;
super.onRestoreInstanceState(savedState.getSuperState());
mTextColor = savedState.textColor;
mTextSize = savedState.progressSize;
mReachedBarHeight = savedState.reachedBarHeight;
mUnreachedBarHeight = savedState.unReachedBarHeight;
mReachedBarColor = savedState.reachedBarColor;
mUnreachedBarColor = savedState.unReachedBarColor;
initializePainters();
setMax(savedState.max);
setProgress(savedState.progress);
setPrefix(savedState.prefix);
setSuffix(savedState.suffix);
setProgressTextVisibility(savedState.progressTextVisibile == 1 ? ProgressTextVisibility.Visible : ProgressTextVisibility.Invisible);
}