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();
のためにまだのようなエラーが発生している場合1 – StevenF
でOK ...おお...その後getSupportFragmentManager()の代わりにgetChildFragmentManagerの()。 –