Значок ActionBarDrawerToggle отсутствует при использовании AppCompat v22

Я использую Appcompat v22 для использования тонированного стиля для AutoCompleteTextView. Однако, как только я изменил свой build.gradle:

compile 'com.android.support:support-v4:21.0.3' compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' 

к этому:

 compile 'com.android.support:support-v4:22.0.0' compile 'com.android.support:appcompat-v7:22.0.0' compile 'com.android.support:gridlayout-v7:22.0.0' compile 'com.android.support:cardview-v7:22.0.0' 

Значок ActionBarDrawerToggle (значок гамбургера) отсутствует. (Однако, если я сдвигаюсь с левой стороны, ящик обнаруживается)

Внутри onCreate ():

  mDrawerLayout = (BBDrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); toolbar.setTitle(mTitle); invalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); trackEvent(TrackingAware.MENU_SHOWN, null); toolbar.setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); 

Также называли syncState ()

 @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (mDrawerToggle != null) { mDrawerToggle.syncState(); } } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (mDrawerToggle != null) { mDrawerToggle.onConfigurationChanged(newConfig); } } 

Если я снижу версию appcompat до 21.0.3, все начнет работать.

Solutions Collecting From Web of "Значок ActionBarDrawerToggle отсутствует при использовании AppCompat v22"

Соответствующая часть находится в последней строке кода, у меня есть их в моем методе Activity.onCreate(..) :

  _drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, 0, 0); drawerLayout.setDrawerListener(_drawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Насколько я помню, эта строка также документирована, но в appcompat v21 они были проигнорированы (или, по крайней мере, значение по умолчанию было другим).

Для тех, кто сталкивается с той же проблемой, что и Dapp (переключить показ стрелки назад вместо значка гамбургера), это, скорее всего, потому, что в вашей деятельности отсутствует элемент drawerToggle.syncState() .

Чтобы быть более конкретным, вам необходимо переопределить метод onPostCreate () следующим образом:

 @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } 

Это не единственный метод, который нужно переоценить. См. Это сообщение jpardogo для получения более подробной информации.

Также не забудьте использовать нужную тему на своем рабочем столе … если ваш экран действия темный, значок по умолчанию может быть черным, если вы не сделаете это: «@ style / ThemeOverlay.AppCompat.Dark.ActionBar"

Это укусило меня, но только на устройствах Android 4.x (5.x + работало нормально странно)