Значок навигации на панели инструментов Android не меняется обратно на 3-строчный значок при возврате на главный экран

У меня есть приложение, состоящее из действия с двумя областями фрагментов: вверху фрагмент панели инструментов, а под ним область фрагмента «контента», которая содержит любой фрагмент, который я хочу загрузить. По мере продвижения пользователя по приложению область содержимого заполняется различными отдельными фрагментами, чтобы отразить это (только один фрагмент за раз, занимая всю область, которая не занята фрагментом панели инструментов), но фрагмент панели инструментов остается прежним. Пока все хорошо... но когда пользователь находится на первом экране, прежде чем он перейдет к другому фрагменту, значок навигации (вверху слева) на панели инструментов показывает трехстрочный значок, указывающий, что пользователь находится на верхнем уровне приложение. Когда пользователь переходит к другому фрагменту содержимого, этот значок навигации превращается в стрелку, указывающую назад, и при нажатии на него выполняется onbackpressed() для фрагмента содержимого (переход на одну позицию назад в стеке), но значок навигации остается стрелкой назад - он не возвращается к значку с 3 линиями. Как я могу восстановить его обратно к значку из 3 строк каждый раз, когда пользователь возвращается к первому фрагменту в области содержимого?

Вот мой код:

Внутри фрагмента панели инструментов:

    ((ActionBarActivity) getActivity()).setSupportActionBar(toolbar);
    ((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((ActionBarActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);

Внутри основного действия, которое содержит все фрагменты:

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();

    return true;
}

person Jon    schedule 03.12.2014    source источник


Ответы (1)


Я решил это, поместив в onoptionsitemselected следующее:

     @Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();

    Fragment testFragment = getSupportFragmentManager().findFragmentByTag(FIRST_FRAGMENT);

    if (testFragment.isVisible()) {
        setDrawerIndicatorEnabled(true);
    }

    return true;
}
person Jon    schedule 03.12.2014