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

时间:2014-06-25 09:17:42

标签: android android-fragments android-listfragment fragmentmanager fragment-backstack

我的应用程序具有这样的结构

MainActivity 扩展ActionBarActivity - 按下按钮 - > ListFragment - 列表项目按 - - > 片段

当处于片段时,如果按下后退键,则会直接转到 MainActivity 。如何进入ListFragment

以下是我期望它做的事情

片段 * ----按下后退键 - > * ListFragment - 按下后退键 - >> MainActivity 扩展了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();

                            }

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

2 个答案:

答案 0 :(得分:1)

不是这个丢失了:.addToBackStack(null)? 见here

答案 1 :(得分:1)

您的代码应如下所示:

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

试试这个。这将有效。