我正在尝试制作一个具有MainActivity和多个片段的应用程序,我从抽屉调用,我希望backbutton工作。方向改变也需要发挥作用。
我遇到的问题是,当我打开第二个碎片时,它会在当前打开并且我可以看到并单击第一个中的元素。
我称之为片段的方式:
Fragment fragment = null;
switch(position)
{
case 0:
fragment = new MainFragment();
break;
case 1:
fragment = new Fragment2();
break;
case 2
fragment = new Fragment3();
break;
case 3:
fragment = new Fragment4();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
//my solution without backbutton
/*if(fragmentManager.getBackStackEntryCount() == 1)
fragmentManager.popBackStack();*/
FragmentTransaction ft= fragmentManager.beginTransaction();
ft.add(R.id.frame_container, fragment);
//ft.hide(fragmentManager);
ft.addToBackStack(MainFragment.class.getName());
ft.commit();
我的后退按钮:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else { //I create an alert }
我猜测我创建片段或片段布局的方式存在问题。
答案 0 :(得分:0)
尝试使用ft.replace(R.id.frame_container, fragment)
代替add
。这将用第二个片段替换第一个片段。