Search code examples
androidandroid-fragmentsandroid-listfragmentfragmentmanagerfragment-backstack

how do I restore the last ListFragment from the current Fragment


My app has structure like this

MainActivity extends ActionBarActivity -- on button press -> ListFragment --on list item press--> Fragment

When in Fragment and if back key is pressed it goes to MainActivity directly . How do I make it to go to the ListFragment

Following is what I expect it to do

Fragment *----on back key pressed-->*ListFragment --on Back Key pressed ---> MainActivity extends ActionBarActivity

Following code is what I am using in mainactivity and listfragment to start any fragment

.........................................

             case 5:

           fragment = new HomeFragment();       
            break;
        default:
            break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            //getSupportActionBar().setSubtitle(navMenuTitles[position]);
            //setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }

UPDATE

Now I have added the following code to my MainActivity

@Override
public void onBackPressed() {

       Fragment frag = getSupportFragmentManager().findFragmentById(R.id.frame_container);

       if((frag instanceof CommonMasjidPrayerTimes)) {
            finish();
        }
}

And following code to my listfragment

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();


                                //  fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
                            if (masjidNamazTimings != null) {
                                    FragmentTransaction ft = fragmentManager.beginTransaction();
                                    ft.addToBackStack(null);
                                    ft.replace(R.id.frame_container, masjidNamazTimings).commit();

                            }

Now when I press the backbutton on my list fragment or fragment it doesnt go back


Solution

  • Your code should look like this:

    FragmentTransaction ft = fragmentManager.beginTransaction();
    ft.replace(R.id.frame_container, fragment).commit();
    ft.addToBackStack(null);
    

    Try this. This will work.