【问题标题】:Why is my back button not working right after dismissing dialog fragment为什么我的后退按钮在关闭对话框片段后无法正常工作
【发布时间】:2013-02-19 00:34:56
【问题描述】:

我创建了一个对话框片段,然后当我按下它时它被关闭。不幸的是,当我再次按下后退按钮时,什么也没有发生(应该发生的是我应该离开这个活动并转到上一个活动)。这个怎么可能?当我关闭片段(使用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");

希望这里有人可以提供帮助,并在此先感谢。

【问题讨论】:

    标签: android back-button android-dialogfragment


    【解决方案1】:

    我找到了发生这种情况的原因。发生这种情况是因为我使用 addToBackstack 基本上撤消了最后一个事务(对话框的创建)。如果我删除 addToBackstack 我不再有返回按钮的问题。

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2019-10-26
      • 2012-08-22
      • 1970-01-01
      相关资源
      最近更新 更多