Значок на Android Bottom Nav Menu исчезает, когда вы возвращаетесь из другого занятия - PullRequest
0 голосов
/ 06 июня 2019

У меня есть 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);
        }
    }

1 Ответ

0 голосов
/ 06 июня 2019

поместите .showBadge и .setNumber в onResume() вместо onCreate()

@Override
public void onResume(){
    super.onResume();
    bottomNavigationView.showBadge(R.id.firstMenu).setNumber(2);

}
...