2013-11-08 2 views
14

Я использую навигационный ящик в своем приложении (тип навигации, который вы открываете, сдвигая с левой стороны экрана). Теперь, как правило, вы также можете открыть его, нажав значок приложения, и когда я посмотрел его, я нашел целую кучу кода, чтобы добавить к вашей деятельности. И просто для простой кнопки. Полагаю, это не совсем то, что я ищу? И если на самом деле это действительно так много кода для одной кнопки, что лучший способ сделать код более понятным? Спасибо, и жаль, что вы такой андроид newb.android - открыть навигационный ящик, нажав значок приложения?

ответ

45

Я столкнулся с этой проблемой и, предполагая, что у вас уже есть ActionBarDrawerToggle как предложено @Kernald, необходимо добавить следующее также к вашей деятельности:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Pass the event to ActionBarDrawerToggle, if it returns 
    // true, then it has handled the app icon touch event 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle your other action bar items... 

    return super.onOptionsItemSelected(item); 
} 

этого ДАВАЙТЕ тумблер обрабатывать кнопку значок нажмите на ActionBar, в результате чего Drawer выскользнуть.

+3

Спасибо! Я ударился головой в стену :) – CaseyB

+1

О, боже, как я мог пройти мимо этого ... Да, это решает :) – Sandra

+1

Большое спасибо @Rajiv Makhijani. Удивительное и быстрое решение. –

7

Все, что вам нужно, описано в Navigation Drawer Guide от Google. В принципе, вы должны включить «вверх» действие на ActionBar:

getActionBar().setDisplayHomeAsUpEnabled(true); 
getActionBar().setHomeButtonEnabled(true);

Тогда вам нужно привязать его к Тумблеру:

 mDrawerToggle = new ActionBarDrawerToggle(
       this,     /* host Activity */ 
       mDrawerLayout,   /* DrawerLayout object */ 
       R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
       R.string.drawer_open, /* "open drawer" description */ 
       R.string.drawer_close /* "close drawer" description */ 
       ) { 

      /** Called when a drawer has settled in a completely closed state. */ 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
      } 

      /** Called when a drawer has settled in a completely open state. */ 
      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(mDrawerTitle); 
      } 
     }; 

     // Set the drawer toggle as the DrawerListener 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
Смежные вопросы