@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
tabs.addOnTabSelectedListener(
new
TabLayout.OnTabSelectedListener() {
@Override
public
void
onTabSelected(TabLayout.Tab tab) {
int
position = tab.getPosition();
navigateAt(position);
}
@Override
public
void
onTabUnselected(TabLayout.Tab tab) {
}
@Override
public
void
onTabReselected(TabLayout.Tab tab) {
}
});
}
}
@Override
public
boolean
onNavigationItemSelected(MenuItem item) {
int
tabPosition = getTabPosition(item);
tabs.selectTab(tabs.getTabAt(tabPosition));
return
true
;
}
private
int
getTabPosition(MenuItem item) {
Menu menu = bottomNavView.getMenu();
for
(
int
i =
0
; i < menu.size(); i++) {
if
(menu.getItem(i).getItemId() == item.getItemId()) {
return
i;
}
}
throw
new
NoSuchElementException(
"Canot find the tab posiition."
);
}
private
final
List<Fragment> fragments = Arrays.asList(fragment1, fragment2, fragment3, fragment4, fragment5);
private
void
navigateAt(position:
int
) {
Fragment selected = fragments.get(position);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, selected)
.commit();
checkBottomMenuAt(position);
}
private
void
checkBottomMenuAt(
int
position) [
Menu menu = bottomNavView.getMenu();
for
(
int
i =
0
; i < menu.size(); i++) {
MenuItem menuItem = menu.getItem(i);
menuItem.setChecked(
false
);
}
menu.getItem(position).setChecked(
true
);
}