Панель инструментов setNavigationOnClickListener нарушает функциональность ActionbarDrawerToggle

Я поменяю панель действий для панели инструментов, и у меня почти все кусочки головоломки на месте. Моя проблема, в частности, если я перемещаюсь «вверх» и восстанавливаю навигационный ящик, кнопка переключения ящика больше не работает. Я понял, что если установить режим ящика разблокированным, у меня есть возможность провести пальцем, чтобы открыть ящик, но я не могу щелкнуть, чтобы открыть ящик.

Итак, я загружаю фрагмент A, поведение ящика в порядке, спускаюсь к фрагменту B и применяю иконку вверх, нажимаю вверх, чтобы вернуться к A, и ящик больше не открывается щелчком.

Ввод фрагмента B:

Toolbar t = mHostingActivity.getToolbar();
        mHostingActivity.getDrawerToggle().setDrawerIndicatorEnabled(false);
        mHostingActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        t.setNavigationIcon(mHostingActivity.getV7DrawerToggleDelegate().getThemeUpIndicator());
        t.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popBackStackToTop(mHostingActivity);
            }
        });

/**
 * Pop the back stack and hide the Up caret all the way to the top level of the {@link com.loylap.activities.MainActivity}
 *
 * @param activity our hosting activity
 */
public static void popBackStackToTop(MainActivity activity) {
    if (activity != null) {
        FragmentManager fm = activity.getSupportFragmentManager();
        fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        activity.getDrawerLayout().setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        activity.getDrawerToggle().setDrawerIndicatorEnabled(true);
    }
}

Блок навигации настраивается так же, как образец, может, проблема в старом способе настройки параметров? Например, у меня все еще есть это в моей деятельности:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

РЕДАКТИРОВАТЬ:

Хорошо, поэтому я сузил проблему до setNavigationOnClickListener (). Если я не установлю это (и поднимаюсь через кнопку возврата) - ящик ведет себя правильно. Итак, теперь вопрос заключается в том, как правильно разрешить пользователю переходить «вверх» и восстанавливать прослушиватель щелчков после того, как мы поднимемся?

8
задан Daniel Wilson 1 February 2015 в 16:42
поделиться