BottomSheetDialogFragment会在onResume上重新出现

时间:2017-02-13 19:12:37

标签: android bottom-sheet

我使用以下代码显示BottomSheetDialogFragment:

BottomSheetDialogFragment bottomSheetDialogFragment = new MediaAddFragment();
    bottomSheetDialogFragment.show(getActivity().getSupportFragmentManager(), bottomSheetDialogFragment.getTag());
    getActivity().getSupportFragmentManager().executePendingTransactions();
    bottomSheetDialogFragment.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            onResume();
            MainActivity.updateMediaButtons();
        }
    });

要关闭它,我会在Fragment中调用dismiss()。有了它,它会被解雇,但如果应用程序恢复,则会再次显示,这不是我的意图。

如果有人可以帮助我,我会很高兴的。我已经扫描了各种关于如何正确使用这些BottomSheetDialogFragments的教程,但是我找不到我的错误。

顺便说一句,我在onResume中没有任何代码来测试它。

2 个答案:

答案 0 :(得分:1)

(代表OP发布)

我发现了我的错误,我正在覆盖调用片段中BottomSheetDialogFragment的onDismissListener。现在它按预期工作。

bottomSheetDialogFragment2.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    // Adding the following line fixed the problem for me
                    bottomSheetDialogFragment2.onDismiss(dialog);
                    // some Code....
                }
            });

答案 1 :(得分:1)

我从 15 分钟就遇到了这个问题,问题是我没有调用 onDismiss of sheet

   override fun onDismiss(dialog: DialogInterface) {
        if (shouldDismiss)
            onDismiss.invoke()
       // super.onDismiss(dialog) // this solution (final code)
    }

所以在你的代码中应该是

 @Override
        public void onDismiss(DialogInterface dialog) {
            onResume();
            MainActivity.updateMediaButtons();
            super.onDismiss(dialog);

        }