Я боролся с этим в течение нескольких долгих дней, и вот что я нашел работать. Я надеюсь, что есть лучшее решение, но это делает работу:
В моей основной деятельности (той, которая запускает фрагмент), создайте следующую публичную функцию, которая будет вызываться дочерним фрагментом:
// The method is in MainActivity.java
public void resetActionBar(boolean childAction, int drawerMode)
{
if (childAction) {
// [Undocumented?] trick to get up button icon to show
drawerToggle.setDrawerIndicatorEnabled(false);
mActionBar.setDisplayHomeAsUpEnabled(true);
} else {
drawerToggle.setDrawerIndicatorEnabled(true);
}
drawerLayout.setDrawerLockMode(drawerMode);
}
Затем из вашего фрагмента, который вы хотите, чтобы кнопка Up появляться, просто вызовите этот метод следующим образом (адаптация имен классов при необходимости):
// This method in in SomeFragment.java
((MainActivity)getActivity()).resetActionBar(true,
DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Итак, вот как включить вверх кнопка из фрагмента:
- Отключение индикатора ящика на объекте drawerToggle - вызов setDrawerIndicatorEnabled (ложь)
- Set displayHomeAsUp - вызов setDisplayHomeAsUpEnable (истинный) на ActionBar объекта
- Необязательно, запирать ящик, так что он не будет появляться по краю салфетке
Надеется, что это помогает, и я надеюсь, что это становится легче в будущем ...
1. Вы не можете установить родительские действия в манифест для фрагмента. 2. Вопрос заключается не в том, как обрабатывать событие itemSelected, а в том, как изменить кнопку «вверх» в панели действий. –