0

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

Yash Sampat
  • 30,051
  • 12
  • 94
  • 120
user3671032
  • 211
  • 2
  • 16
  • Are you using `FragmentTransaction` with proper `replace`/`addToBackStack`/`hide`? perhaps paste some code. – snowdragon Jun 25 '14 at 09:43

2 Answers2

1

Isn't this missing: .addToBackStack(null)? See here

snowdragon
  • 753
  • 7
  • 18
1

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.

Yash Sampat
  • 30,051
  • 12
  • 94
  • 120
  • Do I need to put this in the ListFragment too ? – user3671032 Jun 25 '14 at 10:16
  • you need to use `ft.addToBackStack(null)` for every `Fragment` you want to add to the backstack ... if you dont call `ft.addToBackStack(null)` for a certain `Fragment` it wont be added to the backstack. – Yash Sampat Jun 25 '14 at 10:20
  • FragmentTransaction ft = fragmentManager.beginTransaction(); ft.addToBackStack(null);ft.replace(R.id.frame_container, fragment).commit(); – user3671032 Jun 25 '14 at 14:30