我的应用程序的结构是这样的
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)
吗?看到