2017-01-10 7 views
0

У меня есть в общей сложности 7 фрагментовУдалить фрагменты из backstack android?

Frag1 -> Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 

пользователь переходит из Frag1 -> Frag7 Таким образом, когда пользователь находится на Frag7 и нажимает кнопку назад Frag1 должна быть видна.

Это фрагмент кода транзакция

public void displayView(Fragment fragment, Bundle data) { 
    if (fragment != null) { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction ft = fragmentManager.beginTransaction(); 
     if (data != null) { 
      if (fragment.getArguments() != null) { 
       fragment.getArguments().putAll(data); 
      } else { 
       fragment.setArguments(data); 
      } 
     } 
     if (!fragment.isAdded()) { 
      ft.replace(R.id.frame, fragment); 
      ft.addToBackStack(null); 
     } 
     ft.commit(); 
    } else { 
     Logger.e("MainActivity", "Error in creating fragment"); 
    } 
} 

Я назвал getActivity().getSupportFragmentManager().popBackStack(); 5 раз, прежде чем перейти к Frag7, но я всегда получаю это как backstack

Frag7 -> Frag6 -> Frag1 

Я не могу удалить текущий фрагмент (Frag6), с которого пользователь переходит.

+1

[проверить это] (http://stackoverflow.com/a/28361585/3800164), если у вас нет уже. –

ответ

0

пожалуйста попробуйте ниже логики когда ур происходит от Frag1 -> Frag2 PLS использовать ft.addToBackStack(null);

и после этого, когда ур Навигационное от

Frag2 -> Frag3 -> Frag4 -> Frag5 -> Frag6 -> Frag7 

у не нужно добавлять к backstack средства не называют добавить backStack();

0

Вы можете попробовать ниже код yourfragmentName является фрагмент, где вы хотите, чтобы перенаправить

if (getFragmentManager().getBackStackEntryCount() > 0) { 
     getFragmentManager().popBackStack(yourfragmentName.class.getSimpleName(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 
}