android-fragments 导航抽屉主页图标未恢复为汉堡包图标

weylhg0b  于 2022-11-13  发布在  Android
关注(0)|答案(3)|浏览(169)

我已经做了一个导航栏,包括一个片段内的抽屉布局。一切工作,抽屉滑出从左边和一切。
当应用程序第一次打开时,我看到一个汉堡包图标,当我完全打开并关闭回来时,汉堡包图标会变成一个左箭头。
我不明白为什么会发生这种事。
下面是代码:
活动:

// Drawer
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    // toolbar
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle("Blah");
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // navigation drawer
    NavigationDrawerFragment navigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
    navigationDrawerFragment.setUp(R.id.navigation_drawer, drawerLayout, toolbar);

上面调用的setUp函数:

public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    this.navigationDrawerView = getActivity().findViewById(fragmentId);
    this.drawerLayout = drawerLayout;
    actionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }
    };
    drawerLayout.setDrawerListener(actionBarDrawerToggle);
    drawerLayout.post(new Runnable() {
        @Override
        public void run() {
            actionBarDrawerToggle.syncState();
        }
    });
}

附言:我是安卓编程的新手。我是通过youtube的教程来实现这一点的。我有一个公平的想法是怎么回事,但请(如果可能的话)多描述一点,以帮助我遵循它。

lf5gs5x2

lf5gs5x21#

您的方法onDrawerClosed错误。您正在调用super.onDrawerOpened,并且必须是super.onDrawerClosed(drawerView);
在这种方式下

@Override
public void onDrawerClosed(View drawerView) {
       super.onDrawerClosed(drawerView);
       getActivity().invalidateOptionsMenu();
}
tjjdgumg

tjjdgumg2#

只是改变

import android.support.v4.app.ActionBarDrawerToggle;

进入

import android.support.v7.app.ActionBarDrawerToggle;
vqlkdk9b

vqlkdk9b3#

你可以用这个方法来设置导航与图标在整个应用程序中,我相信它会为你工作。其简单的方法
mainActivity.java

getSupportActionBar().bar.setDisplayHomeAsUpEnabled(true);//Doing so will make the icon appear

navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
            @Override
            public void onDestinationChanged(@NonNull NavController navController, @NonNull NavDestination navDestination, @Nullable Bundle bundle) {
                if ( mAppBarConfiguration.getTopLevelDestinations().contains(navDestination.getId())){
                    toolbar.setNavigationIcon(R.drawable.yout_drawer_icon);
                } else {
                    toolbar.setNavigationIcon(R.drawable.you_back_icon);
                }
            }
        });

相关问题