0

I am going to next fragment using replace command and on back button I need to come back at previous fragment. However its going to home page and not the previous fragment. Below is the code:

View.OnClickListener nextBtnClick = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            FragmentManager manager = getFragmentManager();
            FragmentTransaction ft = manager.beginTransaction();
            Fragment2 tf = new Fragment2();
            ft.replace(android.R.id.tabcontent, tf);
            ft.addToBackStack(null);
            ft.commit();
        }

    };

I tried many options but its not going back to fragment from which new fragment was called. Please advise. Thanks.

user2956437
  • 37
  • 1
  • 5
  • Check out my post over here .. http://stackoverflow.com/questions/18120510/dynamically-changing-the-fragments-inside-a-fragment-tab-host/19859871#19859871 This contains all you need. Check for BaseContainerFragment.class. Cheers! – AndroidHacker Dec 18 '13 at 10:32
  • Thanks. Seems like the post explains everything. I will go through and get back if any concerns. Thanks. – user2956437 Dec 18 '13 at 10:40

3 Answers3

1

I think you need to put a String when you call addToBackStack(). Something like this :

ft.addToBackStack("Fragment2");
Andros
  • 4,069
  • 1
  • 22
  • 30
  • Thanks. Tried as suggested but still same result. – user2956437 Dec 18 '13 at 10:32
  • Can you post your "back" method ? – Andros Dec 18 '13 at 10:33
  • I have not written any exclusive back method. I am just using the default back button on emulator. Do I need to write one. This is the first time I am working on fragments so currently learning by working. Please suggest if I need to have a separate back method to implement my requirement. Thanks. – user2956437 Dec 18 '13 at 10:39
0

You have to override your onBackPressed to pop the back stack of fragments, something like this :

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStackImmediate();
    }else{
        super.onBackPressed();
    }
}
Sylphe
  • 1,553
  • 1
  • 12
  • 13
0

To add your fragment in backstack:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    transaction.replace(fragmentContainerId, fragmentInstance, "TAG");
    transaction.addToBackStack("TAG");
    transaction.commit();

override backpress:

write method return boolean

{ FragmentManager fragManager = getSupportFragmentManager(); if (fragManager.getBackStackEntryCount() > 0) {

        fragManager.popBackStack();

return true; } return false; }

DcodeChef
  • 1,550
  • 13
  • 17