按下返回按钮时,BottomSheet不会折叠

5

我的 bottomSheet 在除了这种情况之外都能正常工作。当我通过“返回按钮”返回到活动时,我希望 bottomSheet 折叠起来,我认为下面的代码可以实现,但它没有起作用。可能是什么原因?(我使用调试器确认它已经到达了这个语句)

@Override
public void onBackPressed() {

    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

当通过finish()返回时,同一行代码可以正常工作:

if (resultCode == Activity.RESULT_OK) {

    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

当它通过finish()返回时?你能详细说明一下吗? - rafsanahmad007
抱歉,糟糕的黏贴,修复了第二段代码片段。 - Mairyu
虽然回答有点晚了,但是在onBackPressed方法中尝试以下代码:mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); - Kaushik Bharadwaj
3个回答

2

如果您的对话框有setCancelable(true),则返回按钮不会触发onbackpressed(),您可以尝试如下操作

我有一个名为BottomSheetFragmentDialog的类,它是从BottomSheetDialogFragment扩展的,我在onCreateDialog方法中有setCanceledOnTouchOutside(false),还覆盖了onCancel()

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val dialog = super.onCreateDialog(savedInstanceState)
    dialog.setCanceledOnTouchOutside(false)
    return dialog
}

override fun onCancel(dialog: DialogInterface) {
    super.onCancel(dialog)
    Toast.makeText(context, "Break Point Here", Toast.LENGTH_SHORT).show()
}

1

更简单的解决方案。

无需重写 onBackPressed 方法,只需在初始化 bottomSheetDialog 时移除 setCancelable(true) 并添加 bottomSheetDialog.setCanceledOnTouchOutside(false)


0

你可以使用 onBackPressed() 方法来实现此代码。

behavior.setState(BottomSheetBehavior.STATE_HIDDEN);

2
这不起作用是因为没有调用onBackPressed()方法。 - David Kariuki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接