|
public class StatedNavigationBottomBar extends BottomNavigationView { |
|
public StatedNavigationBottomBar(Context context) { |
|
super(context); |
|
} |
|
|
|
public StatedNavigationBottomBar(Context context, AttributeSet attrs) { |
|
super(context, attrs); |
|
} |
|
|
|
public StatedNavigationBottomBar(Context context, AttributeSet attrs, int defStyleAttr) { |
|
super(context, attrs, defStyleAttr); |
|
} |
|
|
|
@Override |
|
public Parcelable onSaveInstanceState() { |
|
Parcelable superState = super.onSaveInstanceState(); |
|
SavedState ss = new SavedState(superState); |
|
ss.selectedMenuItemId = getSelectedItemId(); |
|
return ss; |
|
} |
|
|
|
@Override |
|
public void onRestoreInstanceState(Parcelable state) { |
|
SavedState ss = (SavedState) state; |
|
super.onRestoreInstanceState(ss.getSuperState()); |
|
int selectedMenuItemId = ss.selectedMenuItemId; |
|
restoreState(selectedMenuItemId); |
|
} |
|
|
|
private int getSelectedItemId() { |
|
for (int i = 0; i < getMenu().size(); i++) { |
|
MenuItem item = getMenu().getItem(i); |
|
if (item.isChecked()) { |
|
return item.getItemId(); |
|
} |
|
} |
|
return 0; |
|
} |
|
|
|
private void restoreState(int menuItemId) { |
|
Menu menu = getMenu(); |
|
MenuItem menuItem = menu.findItem(menuItemId); |
|
if (menuItem != null) { |
|
menuItem.setChecked(true); |
|
} |
|
} |
|
|
|
static class SavedState extends BaseSavedState { |
|
public static final Parcelable.Creator<SavedState> CREATOR |
|
= new Parcelable.Creator<SavedState>() { |
|
public SavedState createFromParcel(Parcel in) { |
|
return new SavedState(in); |
|
} |
|
|
|
public SavedState[] newArray(int size) { |
|
return new SavedState[size]; |
|
} |
|
}; |
|
|
|
int selectedMenuItemId; |
|
|
|
SavedState(Parcelable superState) { |
|
super(superState); |
|
} |
|
|
|
private SavedState(Parcel in) { |
|
super(in); |
|
selectedMenuItemId = in.readInt(); |
|
} |
|
|
|
@Override |
|
public void writeToParcel(Parcel out, int flags) { |
|
super.writeToParcel(out, flags); |
|
out.writeInt(selectedMenuItemId); |
|
} |
|
} |
|
} |