导航抽屉主页图标无法恢复为汉堡包图标

时间:2015-06-24 22:33:26

标签: android android-layout android-fragments navigation-drawer

我通过在Drawer布局中包含一个片段来制作导航栏。一切正常,抽屉从左边滑出一切。

首次打开应用程序时,我会看到一个汉堡包图标。当我完全打开并将其关闭时,汉堡包图标会变为左箭头。

我无法弄清楚为什么会这样。

以下是代码:

的活动:

 // 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();
        }
    });
}

P.S:我是Android编程新手。我按照youtube教程来实现这一目标。我很清楚发生了什么,但请(如果可能的话)更具描述性,以便帮助我遵循它。

2 个答案:

答案 0 :(得分:2)

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

以这种方式

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

答案 1 :(得分:0)

只需更改

import android.support.v4.app.ActionBarDrawerToggle;

import android.support.v7.app.ActionBarDrawerToggle;