-1

Suppose I have total 7 activity say A, B, C, D, E, F, G, in Activity A I have 4 fragments after clicking on 4th fragment I am launching Activity B, Then Activity C, D, E, F .after Coming to Activity F, I want to navigate to 2 fragments of Activity A but I want to clear all backstack till 2nd fragment of activity A, after clicking on back button 1st fragment of Activity A will display as I am adding all fragment to backstack how will I solve this problem. please help me

code for calling 2nd fragment in Activity F

SeconFragment fragment = new SeconFragment();
            addFragmentToActivity(getFragmentManager(), fragment, R.id.fragment_container_top,"secondfagment");

  public void addFragmentToActivity(@NonNull FragmentManager fragmentManager,
                                             @NonNull Fragment fragment, int frameId,String backstacklabel) {
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(frameId, fragment,backstacklabel);
        transaction.commit();
    }

2 Answers2

0

Your question is bit confusing, but here is what is got

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {  
    Fragment SecondFrag= fm .findFragmentByTag("yourFragmentTag");
     if(SecondFrag !=null){
        return;
       }
     else{
     fm.popBackStack();
    }
}

In code fm .findFragmentByTag("yourFragmentTag") yourFragmentTag replace with your fragmentTag which you dont want to remove from backstack

Hope this solves your problem

Abdul Kawee
  • 2,687
  • 1
  • 14
  • 26
  • I try this but fm .findFragmentByTag("yourFragmentTag") always gives me null.i checked fm.getFragments() which gives me list of last active fragment not backstack fragments list. – Akshay Padalkar Aug 03 '18 at 07:19
0

Use Intent flag FLAG_ACTIVITY_CLEAR_TOP to start your start Activity A, then check if first and second fragment instances are still alive. If not relaunch your fragments in order with AddToBackStack()

Fragment frag = fm.findFragmentByTag("fragmentTag");
  if(frag!=null){
     loadFragments(); // code to launch fragments.
    }
  else{
  fm.popBackStack();
}
Sahil
  • 952
  • 1
  • 7
  • 14