0
我有一個包含FragmentContainer,FragmentMain,FragmentSub的導航抽屜。彈出片段。 Android
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 – StevenF
ohh ...好吧...然後getSupportFragmentManager()而不是getChildFragmentManager()。 –