Open next activity only after navigation drawer completes it closing animation

后端 未结 7 468
陌清茗
陌清茗 2020-12-30 10:13

I\'m using Navigation Drawer in my application.

When the user clicks on any of the menu item in drawer, it opens a new Activity (not fr

7条回答
  •  猫巷女王i
    2020-12-30 10:48

    I did this somehow similiar to Jan.

    Select an item

    If an item gets clicked, i save its id and close the Drawer:

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener()
        {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem)
            {
                clickedItem = menuItem.getItemId();
                drawerLayout.closeDrawers();
                return true;
            }
        });
    

    Listen for drawer close

    If the Drawer gets closed i listen for it and check if an item has been clicked. If it has i call my method to handle the navigation click.

    drawerToggle = new ActionBarDrawerToggle(activity, drawerLayout, R.string.accessibility_open_nav, R.string.accessibility_open_nav)
        {
            @Override
            public void onDrawerClosed(View drawerView)
            {
                super.onDrawerClosed(drawerView);
    
                if(clickedItem != 0)
                {
                    handleNavigationClick();
                }
            }
        };
    
    drawerLayout.setDrawerListener(drawerToggle);
    

    Handle the click

    Here i react to the item click on open intents in this case (simplified). You need to reset the clickedItem here to 0. That is, because if you go back to an activity, open and close the drawer, it would still have the clickedItem number and would handle the click again.

    private void handleItemClick()
    {
        switch (clickedItem)
        {
            case R.id.item_1:
                do_something_1;
                break;
    
            case R.id.item_2:
                do_something_2;
                break;
        }
    
        clickedItem = 0;
    }
    

提交回复
热议问题