我使用以下代码显示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中没有任何代码来测试它。
答案 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);
}