I have a BottomNavigationView
with menu implement on my MainActivity
. I was able to call .showBadge(R.id.firstMenu).setNumber(2);
on the BottomNavigationView
instance and it shows correctly.
I also have another setting activity that get triggered on the drawer menu. Everything works fine, but when I come back to MainActivity
from SettingActivity
the badge would never show. I can trace that .showBadge
and .setNumber
was called.
I'm using com.google.android.material:material:1.1.0-alpha07
Does anyone know what I did wrong?
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init Drawer Menu
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
// Init Fragments
initFragments();
bottomNavigationView =(BottomNavigationView) findViewById(R.id.main_bottom_navbar);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.firstMenu:
fragmentManager.beginTransaction().hide(activeFragment).show(fragment1).commit();
activeFragment = fragment1;
return true;
case R.id.secondMenu:
fragmentManager.beginTransaction().hide(activeFragment).show(fragment2).commit();
activeFragment = fragment2;
return true;
}
return false;
}
});
bottomNavigationView.showBadge(R.id.firstMenu).setNumber(2);
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_logout) {
logout();
} else if (id == R.id.nav_setting) {
Intent settingIntent = new Intent(getApplicationContext(), SettingActivity.class);
startActivity(settingIntent);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void OnListUpdate(int newCount) {
if (newCount > 0) {
bottomNavigationView.showBadge(R.id.firstMenu).setNumber(newCount);
} else {
bottomNavigationView.removeBadge(R.id.firstMenu);
}
}