我有一个包含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();
答案 0 :(得分:0)
android:configChanges="keyboardHidden|orientation"
在清单文件中尝试此操作。对于轮换问题