0
私は2つのペインレイアウトを持っています。Android:フラグメントを移動してバックスタックに追加
私は左側にフラグメントを、右側にフラグメントを持っています。今度は、左を右のものに置き換え、右に新しいものを作成します(つまり、をに移動し、右側のものを作成し、右側に新しいものを作成します)。
java.lang.IllegalStateException: Can't change container ID of fragment MyListFragment{300c6aae #1 id=0x7f070094}: was 2131165332 now 2131165331
まあ、私は
fm.popBackStackImmediate(null, fm.POP_BACK_STACK_INCLUSIVE);
fm.beginTransaction().remove(rightSide).commit();
fm.executePendingTransactions();
することにより、このような状況を回避することができますしかし、私はまた、ABILを持つようにしたい:
private FragmentManager fm; // assigned in onCreate
private MyListFragment rightSide; // assigned in onCreate
public void onClicked(Fragment fragment) { // callback
fm.beginTransaction().replace(R.id.left_side, rightSide).commit();
leftSide = rightSide;
rightSide = MyListFragment.newInstance();
fm.beginTransaction().replace(R.id.right_side, rightSide).commit();
}
は今、この時点で私はIllegalStateException
取得しますそれをバックスタックに追加します。私が後ろを押すと、右のものを取り除き、左から右に動かしたいと思います。
バックスラックに追加してトランザクションを元に戻す機能を使用して、1つのトランザクションをどのようにすることができますか?