2017-09-23 7 views
0

FragmentContainer、FragmentMain、FragmentSubを含むナビゲーションドロワーがあります。ポップフラグメントがスタックから抜けています。 Android

FragmentContainerは自動的にgetChildFragmentManagerを使用してFragmentMainを追加します。

FragmentMainはgetFragmentManagerを用いFragmentSubと現行断片を置換ボタンを有しています。

問題がある:

ケース1:私は自動的にFragmentMainを追加するためにgetFragmentManagerを使用している場合、私は画面を回転しようとすると、エラーがあります。

java.lang.IllegalArgumentException: No view found for id 

ケース2:私はgetChildFragmentManagerを使用している場合は、画面回転時には問題ありませんが、その後、私はbackstack上のフラグメントを開くことができません。

は、私は、スタックのうちのフラグメントをポップ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

でOK ...おお...その後getSupportFragmentManager()の代わりにgetChildFragmentManagerの()。 –