双击BottomSheetDialog快速给出两个对话框



我有一个底部工作表对话框片段,用作底部应用栏的菜单。

如果我快速单击菜单图标两次,对话框会显示两次,我必须关闭它两次,这很烦人。

我的代码如下:

活动主页

override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
    android.R.id.home -> {
        if(mBottomNavDrawerFragment != null && mBottomNavDrawerFragment!!.dialog!!.isShowing){
            mBottomNavDrawerFragment?.dismiss()
            return false
        }
        mBottomNavDrawerFragment = RoundedBottomSheetDialogFragment()
        mBottomNavDrawerFragment?.show(supportFragmentManager, mBottomNavDrawerFragment?.tag)
        true
    }
    R.id.BottomAppBar_fromHomeActivity_MenuMain_Search -> {
        Toast.makeText(this, "Not Implemented yet!", Toast.LENGTH_SHORT).show()
        false
    }
    else -> true
}
}

谁能帮忙?谢谢

使用标签显示 dialogFragment。在再次显示标签之前,请检查堆栈中是否存在标签

    if(getChildFragmentManager().findFragmentByTag(FragmentDialog.TAG) == null) {
        fragmentDialog.show(getChildFragmentManager(), FragmentDialog.TAG);
    }

你可以在这里做一点黑客。这是代码。

private var saveClickCounter = 0
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    return when (item?.itemId) {
        R.id.home -> {
            if (saveClickCounter++ == 0) {
                //Your Dialog Showing Code

                Handler().postDelayed({
                   saveClickCounter=0
                },1000)
            }
            true
        }
        R.id.BottomAppBar_fromHomeActivity_MenuMain_Search -> {
            Toast.makeText(this, "Not Implemented yet!", Toast.LENGTH_SHORT).show()
            false
        }
        else -> true
    }
}
  • 创建一个变量 saveClickCounter 来存储您的计数。
  • 单击时,将增加 saveClickCounter 的值,并在延迟 N 秒后将其更改为零。我在下面的代码中使用了 1 秒。

最新更新