Android - открыть ящик навигации, нажав значок приложения?

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

Ответы

Ответ 1

Я тоже столкнулся с этой проблемой, предположив, что у вас уже есть 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, в результате чего ящик выдвигается.

Ответ 2

Все, что вам нужно, описано в Руководстве по навигации для Google от Google. В принципе, вам нужно включить действие "вверх" в ActionBar:

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

Затем вам нужно привязать его к Toggle:

       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);