2017-09-23 63 views
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(); 

回答

0
android:configChanges="keyboardHidden|orientation" 

在清單文件中試試這個。對於旋轉問題

+0

仍然有一個錯誤,如情況1 – StevenF

+0

ohh ...好吧...然後getSupportFragmentManager()而不是getChildFragmentManager()。 –