У меня есть BottomNavigationView
с меню на моем MainActivity
. Мне удалось вызвать .showBadge(R.id.firstMenu).setNumber(2);
на экземпляре BottomNavigationView
, и он показывает правильно.
У меня также есть другое задание по настройке, которое вызывается в меню ящика. Все работает нормально, но когда я вернусь к MainActivity
из SettingActivity
, значок никогда не появится. Я могу проследить, что .showBadge
и .setNumber
были вызваны.
Я использую com.google.android.material:material:1.1.0-alpha07
Кто-нибудь знает, что я сделал не так?
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);
}
}