私は3つのフラグメントA、BおよびCフラグメントがバックスタックから飛び出しませんか?
これはパスである:A - > B - > C:Bに行くとBはC
は、私は、フラグメントAに行きたい
- < - C:Cは、ルートのフラグメントに戻っ
- < - B:がルートフラグメントに戻っB
しかし、私はフラグメントCに押し戻さとき私の問題はあります、私はこのbehviourを得る:フラグメントCがbackstackから消去されていないようです。私のコードについては
、これはreplaceFragmentの方法は次のとおりです。
public void replaceFragment(Fragment fragment, boolean withBackStack) {
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
String fragmentTag = fragment.getClass().getName();
fragmentTransaction.replace(R.id.frame, fragment, fragmentTag);
if (withBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
try {
fragmentTransaction.commitAllowingStateLoss();
} catch (IllegalStateException ex) {
ex.printStackTrace();
}
}
まず私はボタンでクリックしたときにフラグメントAで、私はボタンをクリックしたときに、私はmListener.replaceFragment(new CFragment(), false);
mListener.replaceFragment(new BFragment(), true);
と呼ばれる、MainActivity
でreplaceFragment(new AFragment(), false);
と呼ばれます 誰でもこの動作の説明がありますか?最後のフラグメントCは、私がバックプレスをクリックしたときに消去されるべきではありませんか?
Here例全体がわかります。 ありがとうございます!
シェアXMLファイル:あなたのメソッドストア内
@Anonymousの回答に基づいてインスタンスが
–xmlファイルでは、単純なテキストビューをフラグメントに追加し、frameLayoutをアクティビティに追加します。とにかく、これは例のリンクです:https://github.com/imen-nmn/BackStackExample –
私はあなたのコードをチェックして、あなたのフラグメントXMLファイルの背景色を設定していません。その理由は重複しています。 –