2

我已经通过在抽屉布局中包含一个片段来制作导航栏。一切正常,抽屉从左边滑出,一切。导航抽屉主页图标不会恢复到汉堡包图标

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

我无法弄清楚为什么会发生这种情况。

下面是代码:

活动:

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

以上称为设置功能:

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

您的方法onDrawerClosed是错误的。你打电话super.onDrawerOpened,必须是super.onDrawerClosed(drawerView);

这样

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

太谢谢你了!我已经吸取了教训。切勿复制粘贴您的代码。我总是忘记重构某些东西或其他东西。 – GauravPandey

0

只要改变

import android.support.v4.app.ActionBarDrawerToggle; 

import android.support.v7.app.ActionBarDrawerToggle;