0

Я пытался создать ящик для навигации для существующего приложения. Я нашел несколько руководств для этого, но большинство из них (включая official Android guide), похоже, для библиотеки v4 ActionBarDrawerToggle, которая устарела. Я пытаюсь использовать библиотеку v7 вместо этого, но мой ActionBarDrawerToggle, похоже, не делает то, что говорит documentation.Значок гаджета для навигационного ящика не отображается с v7 ActionBarDrawerToggle

Редактировать: Изменен код в соответствии с нижеприведенным ответом. Значок гамбургера теперь корректно переключается взад-вперед, но когда пользователь удаляет кнопку назад, чтобы вернуться к основному фрагменту моего приложения, значок гамбургера полностью исчезает. Почему это происходит?

private void addDrawerItems() { 
    String[] itemArray = {"About", "Nearby", "Settings", "Feedback",}; 
    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itemArray); 
    mDrawerList.setAdapter(mAdapter); 
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.d("ContributionsActivity", "Item " + position + " selected"); 
     } 
    }); 
} 

private void setupDrawer() { 
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 

    mDrawerToggle.setDrawerIndicatorEnabled(true); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle(R.string.title_activity_contributions); 
    setContentView(R.layout.activity_contributions); 

    //Set up navigation drawer 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
    mDrawerList = (ListView)findViewById(R.id.drawer_list); 
    addDrawerItems(); 
    setupDrawer(); 
    ... 
    } 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // enabling drawer toggle by clicking on the app icon. 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } else { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       if (mediaDetails.isVisible()) { 
        getSupportFragmentManager().popBackStack(); 
       } 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
} 

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

попробуйте этот ref: http: //stackoverflow.com/questions/26754940/appcompatv7-v21-navigation-drawer-not-showing-hamburger-icon? Rq = 1 –

ответ

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

Вы упускаете состояние синхронизации, добавьте его и все должно быть хорошо.

+0

О, вау, спасибо! Будет принимать ответ, когда минимальное время позволяет мне :) – misaochan

+0

О, ошибка, еще одна проблема сейчас - когда пользователь в любой момент удаляет кнопку возврата оборудования и возвращается к основному фрагменту, значок гамбургера исчезает. Почему это происходит? – misaochan

+1

Это может быть конкретный случай в зависимости от вашей активности/фрагмента hierarhy. Попробуйте решения по этой ссылке: http://stackoverflow.com/questions/17258020/switching-between-android-navigation-drawer-image-and-up-caret-when-using-fragme?rq=1 mDrawerToggle.setDrawerIndicatorEnabled (ложный); ? – Klawikowski

 Смежные вопросы

  • Нет связанных вопросов^_^