フラグメントAがあり、そこから次のDialogFragment
ように開きます。
FragmentActivity fragmentActivity = (FragmentActivity) view.getContext();
FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();
Fragment prev = fragmentActivity.getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment fragmentDialog = MyDialogFragment.newInstance();
fragmentDialog.show(ft, "dialog");
このダイアログから、(ポジティブ/ニュートラル/ネガティブ)ボタンをクリックした後、フラグメントAを置き換えるフラグメントBを開きます。
ダイアログのonClickメソッドで、親アクティビティのコールバックメソッドを実行します。
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which) {
case DialogInterface.BUTTON_NEUTRAL:
detailsCallbacks.openMoreDetails();
break;
}
}
そして最後に、私のアクティビティのopenMoreDetails()
メソッドは次のようになります。
@Override
public void openMoreDetails() {
Fragment fragmentB = Fragment.newInstance();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, fragmentB);
ft.addToBackStack(null);
ft.commit();
}
私が得るものは奇妙です。フラグメントBは、ほんの一瞬だけ画面上で点滅し、その後、フラグメントAに再び置き換えられます(カバーされますか?)。
上ボタンをクリックすると、フラグメントAからも戻ってくるので、これらのトランザクションはバックスタックに追加されませんでした。フラグメントBを表示したいのですが、上ボタンを押すとフラグメントAに戻ります。
どういうわけか可能ですか?そして、私のアプローチの何が問題になっていますか?