BackStackに追加しないとなぜかFragmentの背景が透過されてしまう。
現在作っているアプリには1つのActivityと複数のFragmentがあります。
Fragmentの切り替えはActivityから主に以下のようにして行っています。
FragmentManager fragmentManager=getFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.container,fragment);
fragmentTransaction.commit();
そして、Androidの戻るキーで前のFragmentへ戻れるようにonBackPressedを以下のように書いています。
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStack();
return;
}
finish();
}
以下の説明において、FragmentAはWebView・FragmentBはListViewです。
(アプリには他にもFragmentがありますが、今回の説明で不要なので省きます。)
ListViewにも複数のページがあり、何ページへ行っていてもWebViewへ戻れるようにしたいので、
FragmentBはFragmentB_2〜(ListViewの2ページ目以降)はBackStackへ追加しないようにしています。
今回以下のような移動をしたところ、FragmentB_4の背景が透過されて下にFragmentA_3が見えてしまいました。
FragmentA_1 遷移→FragmentA_2 遷移→FragmentB_1 遷移→FragmentB_2 遷移→ FragmentB_3 戻る→FragmentA_2 戻る→ FragmentA_1 遷移→FragmentA_3 遷移→FragmentB_4
FragmentB_4を表示している時に戻るキーを押すとFragmentA_3が表示されて欲しいのですが、
この状況ですとなぜか押した時にFragmentA_1が表示されます。
FragmentAはWebViewをフルで表示しているからか背景の透過は見られません。
xmlでFragmentBの背景色を指定すると、上の流れでFragmentB_4を表示した時に背景の透過は見られませんが、やはり戻るキーを押すとFragmentA_1が表示されます。
FragmentBをBackStackに追加するようにすれば表示は特に問題はないのですが、
仕様上FragmentBでページ移動した分戻らないとFragmentAが表示されないというのが不便なのでBackStackには追加したくないと考えています。
どうすればやりたいようなことができるでしょうか?