0

У меня проблема с моими фрагментами. Я использую этот код, чтобы перемещаться между фрагментами:Android: Фрагменты действуют неожиданно (внезапно прозрачно?)

между «основными» фрагментами (без backstack, потому что я хочу, чтобы пользователь выйти, когда он нажимает назад (он работает)):

FragmentManager fragmentManager = getFragmentManager(); 
    final FragmentTransaction ft = fragmentManager.beginTransaction(); 

    ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb); 
    ft.replace(R.id.container, NewsFragment.newInstance(position + 1), NewsFragment.class.getSimpleName()); 
    ft.commit(); 

и между "внутренние" фрагменты (с backstack):

  FragmentTransaction ft = ((Activity) getActivity()).getFragmentManager().beginTransaction(); 
      Fragment nextFragment = LexikonDetailFragment 
        .newInstance(item); 

      ft.setCustomAnimations(R.anim.slide_in_up_honeycomb, R.anim.slide_out_up_honeycomb); 
      ft.replace(R.id.container, nextFragment); 
      ft.addToBackStack(LexikonDetailFragment.class.getSimpleName()); 
      ft.commit(); 

Но в следующем случае:

фрагмент A -> фрагмент A1

фрагмент А1 -> фрагмент B

Нажмите кнопку возврата (должна закончиться приложение) -> восходит к фрагменту A1

This происходит:

Image

Похоже Фрагмент A1 не удаляется из задней части стола и остается в фоновом режиме. Я думал, что одним из возможных решений может быть установка всех фрагментов на белом фоне .. но это не устранит проблему, это просто скроет ее. Итак, что может быть возможным решением?

+0

Знаете ли вы, что такое addToBackStack? –

+0

Конечно, но я думал, что фрагмент автоматически удаляется при нажатии «назад». – Joda

+0

Я хочу, чтобы внутренние фрагменты были повторно использованы, вот почему я использую addtobackstack. Но как только изменяется верхний фрагмент, я не хочу снова оживлять старые внутренние фрагменты. – Joda

ответ

0

Хорошо, я нашел решение:

мне пришлось удалить внутренние фрагменты Мануалы с помощью команды:

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 

Я называю эту команду каждый раз, когда мои «внешние» изменения фрагмента. Внутренние удаляются и тада ... он работает как шарм :)