android - 当我按下后退按钮时,BottomSheet 不会折叠

标签 android bottom-sheet

我的 bottomSheet 行为正确,但在这种情况下除外。当我通过“后退按钮”返回 Activity 时,我希望 bottomSheet 折叠,我认为下面的代码可以解决问题,但它不起作用。可能是什么原因 ? (我与调试器确认它到达语句)

@Override
public void onBackPressed() {

    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

当它通过 finish() 返回时,同一行工作正常:

if (resultCode == Activity.RESULT_OK) {

    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

最佳答案

如果你的对话框有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()
}

关于android - 当我按下后退按钮时,BottomSheet 不会折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44574911/

相关文章:

android - 扩展持久性 Bottom Sheet 时调整回收器 View 高度

android - 使用 MaterialComponents 主题后的 BottomSheet 样式

android - 底部导航上方的 Bottom Sheet

android - Rxjava 3 + Retrofit2 - 多次插入数据库问题

android - 数组适配器 notifyDataSetChanged() 将不起作用

android - 如何按纬度和经度查找英国邮政编码

android - 如何使用内部的两个 View 刷新 SwipeRefreshLayout

Android - CoordinatorLayout 中的滚动和 Bottom Sheet

java - FFT 音频的多峰值轮询

Android 底部栏,如 Google Space 应用