Почему мой размер backstack для Android по-прежнему равен 0 после FragmentTransaction.add ()

Хорошо, я сейчас запутался, черт возьми. Я запускаю Activity, который расширяет FragmentActivity, реализующий карты Google v2. Таким образом, фрагмент карты находится в активе и всегда работает.

Теперь я хочу добавить новый фрагмент поверх, который я пробовал с помощью getSupportFragmentManager (), а также getFragmentManager (), и в обоих случаях fragmentManager.getBackStackEntryCount () равен 0 после transaction.commit ().

Это вызывает то, что когда я открываю новый фрагмент поверх карты, я не могу вернуться к карте, а просто выхожу из приложения.

Я знаю, что у обоих менеджеров разные бэкстэки, но ни один из них на самом деле не показал никаких бэкстеков после фиксации.

Может кто-нибудь объяснить, пожалуйста, как мне подойти к этой проблеме. Сложности Android очень велики :)


person KasparTr    schedule 07.03.2016    source источник


Ответы (2)


Я столкнулся с той же проблемой. Наконец, нужно изменить, расширяет FragmentActivity до Activity.

Теперь все работает нормально.

person Ramesh Thangaraj    schedule 07.03.2016

Вместо getSupportFragmentManager, который возвращает правильный номер:

@Override public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0 ) {
        getSupportFragmentManager().popBackStack();
    }
}

Вы должны вызвать fm.executePendingTransactions () после ft.commit () или перед fm.getBackStackEntryCount (). Потому что commit () только планирует транзакции для более позднего прохода.

person adjuremods    schedule 11.03.2016