Android中带有BottomNavigation的NavigationDrawer

时间:2019-06-20 10:06:57

标签: android android-fragments navigation-drawer bottomnavigationview

我同时使用导航抽屉和底部导航,为此我有一个问题,即我创建了一个名为Home Fragment的片段,并在创建导航抽屉活动中调用了该片段,然后所有其他片段都返回了按钮。在底部导航中,当我单击它时,我会看到一个名为“主页”的菜单,它将打开带有后退箭头的片段,而我想使用抽屉菜单打开它,那我该怎么做?

创建时的导航抽屉代码::

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation_drawer);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        fragment =  getSupportFragmentManager().findFragmentById(R.id.baseframe);
        final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        // toolbar.setNavigationIcon(R.drawable.ic_menu_black_24dp);
        toggle.syncState();

        navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            @Override
            public void onBackStackChanged() {

                Log.d(TAG, "Fragment back-stack count : " + getSupportFragmentManager().getBackStackEntryCount());

                if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button

                    @SuppressLint("PrivateResource") final Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back_black_24dp);
                    upArrow.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
                    getSupportActionBar().setHomeAsUpIndicator(upArrow);


                    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            onBackPressed();
                        }
                    });
                } else {

                    getSupportActionBar().setDisplayHomeAsUpEnabled(false);

                    toggle.syncState();
                    navigationView.getMenu().getItem(0).setChecked(true);
                    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            drawer.openDrawer(GravityCompat.START);
                        }
                    });

                    if (!(fragment instanceof Homefragement)) {
                        getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
                        navigationView.getMenu().getItem(0).setChecked(true);
                    }

                }


                if (fragment instanceof Homefragement) {
                    drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
                } else {
                    drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
                }

            }
        });
        invalidateOptionsMenu();
        getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
        navigationView.getMenu().getItem(0).setChecked(true);

                }
 private boolean sendBackToHome = false;
    @Override
    public void onBackPressed() {
    if(!sendBackToHome) {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawers();
        } else {
            super.onBackPressed();
        }
    } else {
        getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();

    }
    }

以及底部导航:

case R.id.navigation_home:
           menuItem.setChecked(true);
              fm = getSupportFragmentManager();
                     getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
               return true;

0 个答案:

没有答案