1

ダイアログ フラグメントを作成し、押し戻すと閉じられます。残念ながら、戻るボタンをもう一度押しても何も起こりません (本来、このアクティビティを終了して前のアクティビティに戻る必要があります)。それはどうしてですか?(dismiss()または戻るボタンを使用して)フラグメントを閉じると、戻るボタンの押下をこれ以上キャッチしないはずです(そのイベントをキャッチするかどうかはわかりません)。

誰がエラーが何であるかを言うことができますか?

以下のコード

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

    Fragment prev = getSupportFragmentManager().findFragmentByTag(
            "File Browser Fragmnent");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);
    FileBrowseDialog dialog = FileBrowseDialog.newInstance(currentVideoId);
    if (dialog.getDialog() != null)
        dialog.getDialog().setCanceledOnTouchOutside(true);
    dialog.setCancelable(true);

    if(darkenedOverlay != null && darkenedOverlay.getVisibility() != View.VISIBLE)
        darkenedOverlay.setVisibility(View.VISIBLE);
    ft.add(dialog, "File Browser Fragmnent");
    ft.show(dialog).commit();

次に、戻るボタンを押すと、ダイアログのフラグメントが消えます(単に隠れているだけなのか、それとも何なのかわかりません)また、これは ft.add() および ft.show().commit(); を使用した場合にのみ発生します。

ft.add().show().commit() の代わりに以下のコードを使用すると、問題なく動作します。

dialog.show(ft, "File Browser Fragment");

ここで誰かが助けてくれることを願っています。事前に感謝します。

4

1 に答える 1

1

なぜそれが起こるのかを見つけました。これは、基本的に最後のトランザクション (ダイアログの作成) を元に戻す addToBackstack を使用するために発生します。addToBackstack を削除すると、戻るボタンに問題がなくなりました。

于 2013-02-18T16:34:56.517 に答える