Android DrawerLayout не показывает значок правильного индикатора

Я пытаюсь использовать новый DrawerLayout для списка. Проблема заключается в том, что я установил прослушиватель ящика, индикатор на панели действий по-прежнему остается значком стрелки, а не значком 3 строки, который я намереваюсь нарисовать. Ниже приведена функция OnCreate:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_front_page); // Swiping Pager set up mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); // Sliding Drawer set up mHabitContract = new HabitsContract(this); mDrawerLayout = (DrawerLayout) findViewById(R.id.front_page_layout); mDrawerList = (ListView) findViewById(R.id.habit_list); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList.setAdapter(new HabitAdapter(mHabitContract.GetHabitItems(), this)); // Fixme: Indicator image doesn't show up mDrawerToggle = new ActionBarDrawerToggle( this, /* host Activity */ mDrawerLayout, /* DrawerLayout object */ R.drawable.ic_navigation_drawer, /* nav drawer image to replace 'Up' caret */ R.string.drawer_open, /* "open drawer" description for accessibility */ R.string.drawer_close /* "close drawer" description for accessibility */ ) { public void onDrawerClosed(View view) { //getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } public void onDrawerOpened(View drawerView) { //getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; mDrawerLayout.setDrawerListener(mDrawerToggle); // Action Bar set up getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayShowHomeEnabled(true); } 

Может ли кто-нибудь помочь?

Обновление: я нашел проблему. Я добавил функцию onPostCreate следующим образом, и теперь она работает.

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

Вам нужно syncState() вашего объекта ActionBarDrawerToggle из onPostCreate()

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

Для тех, кто ищет это или пришел сюда в поисках ответа: вы должны использовать DrawerToggle support.v7. После того, как я его использую:

 drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_opened, R.string.drawer_closed){ public void onDrawerClosed(View view){ //actionBar.setTitle(mTitle); invalidateOptionsMenu(); // crea la llamada para onPrepareOptionsMenu } public void onDrawerOpened(View view){ //actionBar.setTitle(mDrawerTitle); invalidateOptionsMenu(); // crea la llamda para onPrepareOptionsMenu } }; 

Это прекрасно работает и имеет анимацию, которая потрясает!

Значок, который вы используете, называется «ic_navigation_drawer». Вы можете проверить, является ли он правильным, потому что значок, который Google предлагает в официальном руководстве ( http://developer.android.com/training/implementing-navigation/nav-drawer.html ), называется «ic_drawer».

Также проверьте тщательно, если пользовательская тема ActionBar определена в вашем проекте в файле style.xml с условием android:displayOptions=showTitle . Как это:

  <style name="OrangeBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:displayOptions">showTitle</item> ... </style> 

И он может испортить индикатор ящика. Чтобы избежать этого, добавьте showHome в android:displayOptions :

  <item name="android:displayOptions">showHome|showTitle</item> 
Intereting Posts
Вертикальная анимация 3dCarousel в android? Smack 4.1 Ошибка аутентификации SASL Сосредоточьтесь на EditText в ListView, когда потомки блоков (Android) Совместное изображение с намерением Android C # – что будет проще, разработка IOS или Android? Android ScrollView внутри ViewPager – как сделать swiping более эффективным Мне нужно отправить файл изображения на сервер Clarifai для классификации изображений, но я продолжаю получать «пропущенные рамки, приложение делает слишком много работы», Как реализовать счетчик значков на значке меню гамбургера Android Название CollapsingToolbarLayout исчезает GetSupportFragmentManager не может быть назначен FragmentManager NullPointerException (и т. Д.) Из Parcel.readException Уведомлять службу Android, когда связанный клиент отключается Поиск по запросу не будет закрыт после поиска Запуск активности из службы на экране блокировки включает экран, но не показывает активность Анимация Android с плавающей кнопкой