流行片段出栈。 Android的

时间:2017-09-23 03:55:51

标签: android android-fragments

我有一个包含FragmentContainer,FragmentMain,FragmentSub的导航抽屉。

FragmentContainer使用getChildFragmentManager自动添加FragmentMain。

FragmentMain有一个按钮,使用getFragmentManager用FragmentSub替换当前片段。

问题是:

案例1 :如果我使用getFragmentManager自动添加FragmentMain,则在尝试旋转屏幕时会出错。

java.lang.IllegalArgumentException: No view found for id  

案例2 :如果我使用getChildFragmentManager,屏幕旋转期间没有问题,但之后我无法在后台堆栈上弹出片段。

我在MainActivity上有这些方法,它将片段弹出堆栈,但它没有工作。

 @Override
public void onBackPressed() {

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        FragmentManager fragmentManager = getSupportFragmentManager();

        if (fragmentManager.getBackStackEntryCount() != 0) {
            fragmentManager.popBackStack();
        } else {
           logoutDialog();
        }

    }
}

FragmentContainer

FragmentMain fragmentMain = new FragmentMain();
    FragmentManager fragmentManager = getChildFragmentManager();
    fragmentManager.beginTransaction().add(R.id.fragmentContainer, fragmentMain).commit();

FragmentMain

getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, fragmentMain).addToBackStack(null).commit();

FragmentSub

getFragmentManager().beginTransaction().replace(R.id.fragmentContainer, fragmentSub).addToBackStack(null).commit();

1 个答案:

答案 0 :(得分:0)

 android:configChanges="keyboardHidden|orientation"

在清单文件中尝试此操作。对于轮换问题