我的应用程序具有这样的结构
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();
}
现在,当我按下列表片段或片段上的后退按钮时,它不会返回
答案 0 :(得分:1)
不是这个丢失了:.addToBackStack(null)
?
见here
答案 1 :(得分:1)
您的代码应如下所示:
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.frame_container, fragment).commit();
ft.addToBackStack(null);
试试这个。这将有效。