2015-06-13 62 views
26

我有一个简单的android.support.v7.widget.Toolbar,我试图做的是按左上角的“汉堡包”图标打开一个NavigationDrawer。 “汉堡包”按钮是可见的,当我从左边开始拉动时,我看到按钮上的动画,但按下按钮并不像我期望的那样打开/关闭NavigationDrawer。我已经关注了[Google文档] [1],但仍然无法弄清楚。对不起,任何混乱,下面是简化代码我目前正在尝试使用:单击工具栏上的汉堡包图标无法打开导航抽屉

public class MainActivity extends AppCompatActivity implements 
    View.OnClickListener, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    setContentView(R.layout.activity_main); 


    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("NICK", "button button button.................."); 
     } 
    }); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
     NavigationView n = (NavigationView) findViewById(R.id.nav); 
     mDrawerLayout.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       Log.d("NICK", "button button button.................."); 
      } 
     }); 

     //mDrawerLayout.setDrawerListener(mDrawerToggle); 
     n.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       switch (menuItem.getItemId()) { 
        ////....... 

       } 
       mDrawerLayout.closeDrawers(); // CLOSE DRAWER 
       return true; 
      } 
     }); 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    Log.d("NICK","CWECNEWKVNERIPNVIEWNFVIPEWNVIPEWNVPIEWNVPIEWNVPIEWNVPIRWNVPRWVPO"); 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      mDrawerLayout.openDrawer(GravityCompat.START); // OPEN DRAWER 
      Log.d("NICK","CWECNEWKVNERIPNVIEWNFVIPEWNVIPEWNVPIEWNVPIEWNVPIEWNVPIRWNVPRWVPO"); 
      return true; 

    } 
      return super.onOptionsItemSelected(item); 


} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.drawer, menu); 
    return true; 
} 


} 

}

而且因为它是运行时,我没有得到任何日志调试语句。

这实质上是我拥有的问题:https://stackoverflow.com/a/26636045/1489990。我遵循这一点,它只是不起作用。

我的理解是,当按下汉堡包图标时,会调用setNavigationOnClickListener,这是我关注的焦点,我的努力是正确处理事件,因为当我按下按钮时,我没有得到我的日志语句。让我知道这个想法是不正确的。 https://developer.android.com/reference/android/widget/Toolbar.html#setNavigationOnClickListener(android.view.View.OnClickListener)

我的布局:

ActivityMain.xml

<RelativeLayout 
xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/d" 
android:background="@drawable/home_wall"> 




<android.support.v7.widget.Toolbar 
    android:id="@+id/my_toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:layout_marginBottom="10dp" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:layout_marginTop="25dp" 

    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" /> 



<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:id="@+id/drawer" 

    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 



    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="200dp" 
     android:id="@+id/imageView" 
     android:src="@drawable/trans2" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="10dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:paddingBottom="300dp" /> 

    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/d8" 
     android:layout_alignParentTop="true" 
     android:layout_alignLeft="@+id/imageView" 
     android:layout_alignStart="@+id/imageView" 
     android:paddingTop="0dp"> 

     <Button 
      android:layout_width="75dp" 
      android:layout_height="50dp" 
      android:text="Gallery" 
      android:id="@+id/save_button" 
      android:background="#dd2c00" android:textColor="#fff" 
      android:layout_below="@+id/Purchases" 
      android:layout_toRightOf="@+id/start_button" 
      android:layout_toEndOf="@+id/start_button" /> 
     <Button 
      android:layout_width="125dp" 
      android:layout_height="50dp" 
      android:text="Store" 
      android:id="@+id/Purchases" 
      android:background="#ff6e40" android:textColor="#fff" 
      android:layout_above="@+id/instructions_button6" 
      android:layout_toLeftOf="@+id/start_button" 
      android:layout_toStartOf="@+id/start_button" 
      android:layout_marginBottom="98dp" /> 
     <Button 
      android:layout_width="75dp" 
      android:layout_height="50dp" 
      android:text="Help" 
      android:id="@+id/instructions_button6" 
      android:background="#dd2c00" android:textColor="#fff" 
      android:layout_alignParentBottom="true" 
      android:layout_toLeftOf="@+id/start_button" 
      android:layout_toStartOf="@+id/start_button" 
      android:layout_marginLeft="5dp" 
      android:layout_marginBottom="10dp" /> 
     <Button 
      android:layout_width="75dp" 
      android:layout_height="300dp" 
      android:text="Start" 
      android:id="@+id/start_button" 
      android:background="#ff3d00" 
      android:textColor="#fff" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="10dp" /> 
     <Button 
      android:layout_width="125dp" 
      android:layout_height="50dp" 
      android:text="Achievements" 
      android:id="@+id/Scores" 
      android:background="#ff6e40" android:textColor="#fff" 
      android:layout_alignTop="@+id/Purchases" 
      android:layout_toRightOf="@+id/start_button" 
      android:layout_toEndOf="@+id/start_button" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Welcome to the quiz!" 
      android:id="@+id/textView" 
      android:textColor="#fff" 
      android:textSize="20dp" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="70dp" /> 


     <!-- sign-in button --> 
     <com.google.android.gms.common.SignInButton 
      android:id="@+id/sign_in_button" 
      android:layout_width="110dp" 
      android:layout_height="50dp" 
      android:layout_above="@+id/start_button" 
      android:layout_centerHorizontal="true" 
      android:visibility="visible" /> 

     <!-- sign-out button --> 
     <Button 
      android:id="@+id/sign_out_button" 
      android:layout_width="125dp" 
      android:layout_height="wrap_content" 
      android:text="Sign Out" 
      android:visibility="invisible" 
      android:background="#dd4b39" 
      android:textColor="#fff" 
      android:layout_alignTop="@+id/sign_in_button" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="160dp" /> 

    </RelativeLayout> 

    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#fff" 
     android:id="@+id/nav" 

     app:headerLayout="@layout/drawer_header" 
     app:menu="@menu/drawer"/> 
</android.support.v4.widget.DrawerLayout> 

Drawer.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_menu" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item android:title="Google Play Games" 

    android:icon="@drawable/ic_local_airport_white_48dp"> 
    <menu> 
     <item 
      android:id="@+id/Sign_in_drawer" 

      android:icon="@drawable/games_controller_grey" 
      android:title="Sign in" /> 
     <item 
      android:id="@+id/ach" 
      android:icon="@drawable/games_achievements" 
      android:title="Achievements" /> 
    </menu> 
</item> 

<item android:title="Start a Quiz" 

    android:icon="@drawable/ic_local_airport_white_48dp"> 
    <menu> 
     <item 
      android:id="@+id/quizStart25" 

      android:icon="@drawable/ic_local_airport_white_48dp" 
      android:title="25 Questions" /> 
     <item 
      android:id="@+id/quizStart10" 
      android:icon="@drawable/ic_local_airport_white_48dp" 
      android:title="10 Questions" /> 
    </menu> 
</item> 

<group 
    android:checkableBehavior="single"> 
    <item 
     android:id="@+id/gallery" 

     android:icon="@drawable/ic_photo_library_white_48dp" 
     android:title="Gallery" /> 
    <item 
     android:id="@+id/stats" 
     android:icon="@drawable/ic_toc_white_48dp" 
     android:title="Statistics" /> 
    <item 
     android:id="@+id/store" 
     android:icon="@drawable/ic_shop_white_48dp" 
     android:title="Store" /> 
    <item 
     android:id="@+id/settings" 
     android:icon="@drawable/ic_settings_white_48dp" 
     android:title="Settings" /> 
    <item 
     android:id="@+id/about" 
     android:icon="@drawable/ic_info_white_48dp" 
     android:title="About" /> 

</group> 

<item android:title="Support"> 
    <menu> 
     <item 
      android:id="@+id/help_drawer" 
      android:icon="@drawable/ic_help_white_48dp" 
      android:title="Help" /> 
     <item 
      android:id="@+id/report" 
      android:icon="@drawable/ic_report_problem_white_48dp" 
      android:title="Contact Developer" /> 
     <item 
      android:id="@+id/GPlusCommunity" 
      android:icon="@drawable/btn_g_white_normal" 
      android:title="Google+ Community" /> 

    </menu> 
</item> 

+0

问题是你如何创建你的布局。工具栏位于DrawerLayout的外部,因此您的工具栏正在丢失上下文。看到我更新的答案。 – hungryghost

回答

78

见我answer到类似的职位。

基本上,只要跳过ActionBarDrawerToggle如果你不需要它的其他事情(如回调)。您可以删除所有的代码,只是实现你的开/关抽屉的行为,就像这样:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      mDrawerLayout.openDrawer(GravityCompat.START); // OPEN DRAWER 
      return true; 
     .... 
    } 
    return super.onOptionsItemSelected(item); 
} 

上面的代码段的工作你是否正在使用NavigationView。如果您使用的是您的NavigationView点击收听导航视图,:

navigationView.setNavigationItemSelectedListener(
    new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 
      // Handle menu item clicks here. 
      drawerLayout.closeDrawers(); // CLOSE DRAWER 
      return true; 
     } 
    }); 

更新:

此外,请确保您的活动正在扩大AppCompatActivity(而不是ActionBarActivity)。有关更多信息,请参阅my answer here

UPDATE2:

我调试您的修改后的代码。尝试这个。它现在应该工作。阅读我的内联的意见,看看有什么我更改原因:

import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 
//  View.OnClickListener, 
//  GoogleApiClient.ConnectionCallbacks, 
//  GoogleApiClient.OnConnectionFailedListener { 


    DrawerLayout mDrawerLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
     setSupportActionBar(toolbar); 
     // You were missing this setHomeAsUpIndicator 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     // I removed your toolbar and drawer click listeners. 
     // They're not needed to open drawer. 
     // The drawer opens from onOptionsItemSelected(). 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
     NavigationView n = (NavigationView) findViewById(R.id.nav); 
     n.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       switch (menuItem.getItemId()) { 
        ////....... 

       } 
       mDrawerLayout.closeDrawers(); // CLOSE DRAWER 
       return true; 
      } 
     }); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     Log.d("NICK", "CWECNEWKVNERIPNVIEWNFVIPEWNVIPEWNVPIEWNVPIEWNVPIEWNVPIRWNVPRWVPO"); 
     switch (item.getItemId()) { 
      // THIS IS YOUR DRAWER/HAMBURGER BUTTON 
      case android.R.id.home: 
       mDrawerLayout.openDrawer(GravityCompat.START); // OPEN DRAWER 
       Log.d("NICK", "CWECNEWKVNERIPNVIEWNFVIPEWNVIPEWNVPIEWNVPIEWNVPIEWNVPIRWNVPRWVPO"); 
       return true; 

     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

// I also removed your onConfigurationChanged(). 
// It's not needed since you're no longer using ActionBarDrawerToggle. 

UPDATE3:这个问题的布局

看着你ActivityMain.xml的是,我看到您的工具栏是你DrawerLayout之外。你不能那样做。 工具栏需要成为DrawerLayout的子项,以便工具栏找到合适的上下文。

您需要使DrawerLayout成为您活动的根源。这里的documentation,具体报价为:

要添加抽屉式导航,带有 DrawerLayout对象作为布局的根视图声明你的用户界面。在 DrawerLayout中,添加一个视图,其中包含 屏幕(抽屉被隐藏时的主要布局)和包含抽屉导航内容的另一个 的主要内容。希望

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer" 
    ... > 

    <RelativeLayout 
     android:id="@+id/d" 
     ...> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/my_toolbar" 
      ... /> 

     <!-- Your other content goes here --> 

    </RelativeLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/nav" 
     ... /> 

</android.support.v4.widget.DrawerLayout> 

,这会对您的问题护理:

所以基本上,改变你的ActivityMain.xml到这个样子。

+0

我已经尝试过这一点,我甚至在'onOptionsItemSelected'中插入了日志语句,它们从不显示,表明这种方法永远不会到达。因为现在我在我的'onCreate'方法之外有'onOptionsItemSelected',如果这很重要的话。仍然没有找到解决方案 – ez4nick

+0

@ ez4nick,看到我更新的答案。你有没有机会扩展ActionBarActivity? – hungryghost

+1

我正在扩展'AppCompatActivity' – ez4nick

8

你需要同步的抽屉切换:

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    mDrawerToggle.syncState(); 
} 

编辑:该代码为我工作(从您的文章复制)

public class TempActivity extends AppCompatActivity { 
    private ActionBarDrawerToggle mDrawerToggle; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.temp); 
     setupDrawer(); 
    } 
    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 
    @Override 
    public boolean onOptionsItemSelected(final MenuItem item) { 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mDrawerToggle.syncState(); 
    } 
    private void setupDrawer() { 
     Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout); 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,toolbar,R.string.drawer_open, R.string.drawer_close) { 
      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
    } 
} 

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/my_drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/my_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
     <FrameLayout 
      android:id="@+id/content_frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </LinearLayout> 
    <RelativeLayout 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#FFF" 
      android:text="DRAMER MENU" /> 
    </RelativeLayout> 
</android.support.v4.widget.DrawerLayout> 

但如果您使用的是新NavigationView,那么你不” t需要拨动等Here is a good example如何使用它。

+0

我正在使用新的'NavigationView',我试着按照您提供的链接(请参阅更新2),并且永远不会收到确认按钮被按下。我假设这是NavigationDrawer实际打开/关闭的地方 – ez4nick

+0

然后不需要设置“ActionBarDrawerToggle”。 – mbmc

1

对于抽屉拨动你需要设置“显示家庭高达”为false: getSupportActionBar().setDisplayHomeAsUpEnabled(false);

+2

试过这个,它并没有解决我的问题。和以前一样的问题。 – ez4nick

1

因为我没有具体回答你的问题,我想提出一个完全不同的方法:

在我的项目中使用即时通讯由Mike朋兹开发的Material Drawer。 它看起来非常好,很容易实现,并没有太多你必须担心。

所以,如果你找不到解决你的问题,你可以试试看。

1

覆盖onOptionsItemSelected方法和使用下面

if(item.getItemId() == android.R.id.home){ // use android.R.id 
    mDrawerLayout.openDrawer(Gravity.LEFT); 
} 
1

使用ActionBarDrawerToggle和实施public boolean onOptionsItemSelected(MenuItem item)

工具栏不必是DrawerLayout内,它不太可能是这个问题的原因。 toggle.onOptionsItemSelected(item)查找所选项目的ID,如果它是android.R.id.home,则抽屉的可见性会切换。因此,工具栏或任何创建Home MenuItem的View都可以放置在布局的任何位置。

中的活动:

ActionBarDrawerToggle toggle; 

private void setupDrawerToggleInActionBar() { 
    // assuming a Toolbar has been initialized in your onCreate 
    this.setSupportActionBar(toolbar); 

    // setup the action bar properties that give us a hamburger menu 
    ActionBar actionBar = this.getSupportActionBar(); 
    if(actionBar != null) { 
     actionBar.setDisplayHomeAsUpEnabled(true); 
     actionBar.setHomeButtonEnabled(true); 
    } 

    // the toggle allows for the simplest of open/close handling 
    toggle = new ActionBarDrawerToggle(this, 
             drawerLayout, 
             R.string.navigation_drawer_open, 
             R.string.navigation_drawer_close); 
    // drawerListener must be set before syncState is called 
    drawerLayout.setDrawerListener(toggle); 

    toggle.setDrawerIndicatorEnabled(true); 
    toggle.syncState(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    // This is required to make the drawer toggle work 
    if(toggle.onOptionsItemSelected(item)) { 
     return true; 
    } 

    /* 
    * if you have other menu items in your activity/toolbar 
    * handle them here and return true 
    */ 

    return super.onOptionsItemSelected(item); 
} 
1

简单的通话功能onOptionsItemSelected ActionBarDrawerToggle类(菜单项菜单项)上的活动选项菜单管理像下面的功能。

mDrawerToggle= new ActionBarDrawerToggle(activity, drawerLayout, R.string.nav_drawer_accessbility_drawer_open, 
      R.string.nav_drawer_accessbility_drawer_close); 


@Override 
public boolean onOptionsItemSelected(final android.view.MenuItem item) { 
    navigation().getOptionsMenuInflater(this).closeSearchView(); 
    // The action bar home/up action should open or close the drawer. 
    // ActionBarDrawerToggle will take care of this behavior. 
    mDrawerToggle.onOptionsItemSelected(item); 

    return super.onOptionsItemSelected(item); 
} 

OR

覆盖onOptionsItemSelected活动像下面

public boolean onOptionsItemSelected(MenuItem item) { 
    if (item != null && item.getItemId() == android.R.id.home) { 
     toggle(); 

    } 
    return super.onOptionsItemSelected(item); 
} 

private void toggle() { 
    if (mDrawerLayout.isDrawerVisible(GravityCompat.START)) { 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
    } else { 
     mDrawerLayout.openDrawer(GravityCompat.START); 
    } 
} 
0

虽然接受的答案在这里工作好了但是,正如他们所说的 “预防胜于治疗” ..添加mDrawerToggle.syncState( );在onPostCreate和onConfigurationChanged()wroks作为answerd通过@mbmc上述好得多:

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    // Sync the toggle state after onRestoreInstanceState has occurred. 
    mDrawerToggle.syncState(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 
0

如果帮助别人,对我来说这事,因为调用setSupportActionBar(toolbar)两次的愚蠢错误的一样。只需在onCreate方法中调用一次,就再也不用。我的错误是后来用另一种方法调用它。

相关问题