How to add a notification button with the number of notifications in the appcompact v7 toolbar?

In my Android project, I want to show the notification button on the toolbar with the notification count.i using Theme.AppCompat.Light.NoActionBar as my theme. Menu items in menu.xml are not displayed. Please help me. Here is my code.

    setContentView(R.layout.activity_main);

    mTitle = mDrawerTitle = getTitle();
    navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
    navMenuIcons = getResources()
            .obtainTypedArray(R.array.nav_drawer_icons);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
    toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
    toolbartitle = (TextView) findViewById(R.id.titletool);

    // set a custom shadow that overlays the main content when the drawer
    // opens
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
            GravityCompat.START);

    // set up the drawer list view with items and click listener
    /*
     * mDrawerList.setAdapter(new ArrayAdapter<String>(this,
     * R.layout.drawer_list_item, mPlanetTitles));
     * mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
     */

    navDrawerItems = new ArrayList<NavDrawerItem>();

    // adding nav drawer items to array

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons
            .getResourceId(0, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons
            .getResourceId(1, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons
            .getResourceId(2, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons
            .getResourceId(3, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons
            .getResourceId(4, -1)));

    navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons
            .getResourceId(5, -1)));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons
            .getResourceId(6, -1)));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons
            .getResourceId(7, -1)));
    navDrawerItems.add(new NavDrawerItem(navMenuTitles[8], navMenuIcons
            .getResourceId(8, -1)));

    // Recycle the typed array
    navMenuIcons.recycle();

    mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

    // setting the nav drawer list adapter
    adapter = new NavDrawerListAdapter(getApplicationContext(),
            navDrawerItems);
    mDrawerList.setAdapter(adapter);

    // enabling action bar app icon and behaving it as toggle button
    //getActionBar().setDisplayHomeAsUpEnabled(true);
    //getActionBar().setHomeButtonEnabled(true);

    // ActionBarDrawerToggle ties together the the proper interactions
    // between the sliding drawer and the action bar app icon
    mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
    mDrawerLayout, /* DrawerLayout object */
    toolbar, /* nav drawer image to replace 'Up' caret */
    R.string.drawer_open, /* "open drawer" description for accessibility */
    R.string.drawer_close /* "close drawer" description for accessibility */
    ) {
        public void onDrawerClosed(View view) {
            // getSupportActionBar().setTitle(mTitle);
            toolbartitle.setText(mTitle);
            invalidateOptionsMenu(); // creates call to
                                        // onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            // getSupportActionBar().setTitle(mDrawerTitle);
            toolbartitle.setText(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to
                                        // onPrepareOptionsMenu()
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    // getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // getSupportActionBar().setHomeButtonEnabled(true);

     toolbar.inflateMenu(R.menu.main);

     toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {

                switch (menuItem.getItemId()){
                case R.id.action_settings:
                    return true;
                case R.id.action_login:
                    startActivity(new Intent(C2ShopActivity.this, ActivityLogin.class));
                    return true;
                case R.id.my_orders:
                    startActivity(new Intent(C2ShopActivity.this,
                            ActivityMyOrders.class));
                    return true;
                }

                return false;
            }
        });
     toolbar.setLogo(R.drawable.ic_launcher);
    toolbartitle.setText("C2Shoppy");
    mDrawerToggle.syncState();

    if (savedInstanceState == null) {
        displayView(0);
        // selectItem(0);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    View count = menu.findItem(R.id.badge).getActionView();
    notifCount = (Button) count.findViewById(R.id.btnCart);

    notifCount.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(C2ShopActivity.this,
                    ActivityCart.class));
        }

    });
    if (mNotifCount == 0) {

    } else {
        notifCount.setText(String.valueOf(mNotifCount));
    }

    return super.onCreateOptionsMenu(menu);
}
+4
source share

Source: https://habr.com/ru/post/1611577/


All Articles