我如何从当前片段恢复最后一个ListFragment



我的应用程序的结构是这样的

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

Fragment中,如果按下back键,则直接转到MainActivity。我如何使它转到ListFragment

下面是我希望它做的

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

下面的代码是我在mainactivity和listfragment中用来启动任何片段的代码

.........................................
             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");
        }

现在我已经添加了下面的代码到我的MainActivity
@Override
public void onBackPressed() {
       Fragment frag = getSupportFragmentManager().findFragmentById(R.id.frame_container);
       if((frag instanceof CommonMasjidPrayerTimes)) {
            finish();
        }
}

和下面的代码到我的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();
                            }

现在当我按下列表片段或片段的返回按钮时它不会返回

你的代码应该是这样的:

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

试试这个。

这不是缺少:.addToBackStack(null)吗?看到

最新更新