Я использую DrawerArrowDrawable
, чтобы анимировать значок гамбургера во время открытия и закрытия навигационного ящика. Ниже приведен фрагмент кода, я использовал для этого:Как получить событие щелчка DrawerArrowDrawable
DrawerArrowDrawable drawerArrow = new DrawerArrowDrawable(this);
toolbar.setNavigationIcon(drawerArrow)
mDrawerToggle.syncState();
Теперь, когда я открываю фрагмент я использую actionBar.setHomeAsUpIndicator(R.drawable.back_icon);
& actionBar.setDisplayHomeAsUpEnabled(true);
в этом самом фрагменте, чтобы изменить значок навигации в виде значка обратно. Значок изменяется, но функциональность этой кнопки остается такой же, то есть она открывает навигационный ящик, но я хочу вернуться к предыдущему фрагменту (используя popBackStack
).
Я попытался переопределить onOptionsItemSelected
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
}
break;
}
}
Но контроль никогда не достигает в вышеуказанном блоке, когда я нажимаю на значок навигации.
Если я узнаю, что Как перехватить событие click DrawerArrowDrawable? Я мог бы запустить popBackStack
и делать то, что хочу.
Hi @Ankit, спасибо за ваш ответ, но есть одна проблема, после использования кода ящик навигации не открывается при нажатии кнопки. –
Привет @AnasAzeem В методе onDetach фрагмента, из которого вы делаете popBackStack, вам нужно снова установить NavigationDrawer. –