碎片互相覆盖

时间:2014-11-13 14:31:58

标签: android android-layout android-fragments fragment

我正在尝试制作一个具有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  }

我猜测我创建片段或片段布局的方式存在问题。

1 个答案:

答案 0 :(得分:0)

尝试使用ft.replace(R.id.frame_container, fragment)代替add。这将用第二个片段替换第一个片段。