双击 BottomSheetDialog 快速给出两个对话框
Double clicking on BottomSheetDialog quickly gives two dialog
我有一个底部 sheet 对话框片段,我将其用作底部应用栏的菜单。
如果我快速点击菜单图标两次,对话框会出现两次,我不得不关闭它两次,这很烦人。
我的代码如下:
ActivityHome.kt
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
}
}
有人可以帮忙吗?谢谢
您可以在这里做一些修改。这是代码。
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 秒。
使用标签显示dialogFragment。在再次显示之前检查标签是否存在于堆栈中
if(getChildFragmentManager().findFragmentByTag(FragmentDialog.TAG) == null) {
fragmentDialog.show(getChildFragmentManager(), FragmentDialog.TAG);
}
我有一个底部 sheet 对话框片段,我将其用作底部应用栏的菜单。
如果我快速点击菜单图标两次,对话框会出现两次,我不得不关闭它两次,这很烦人。
我的代码如下:
ActivityHome.kt
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
}
}
有人可以帮忙吗?谢谢
您可以在这里做一些修改。这是代码。
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 秒。
使用标签显示dialogFragment。在再次显示之前检查标签是否存在于堆栈中
if(getChildFragmentManager().findFragmentByTag(FragmentDialog.TAG) == null) {
fragmentDialog.show(getChildFragmentManager(), FragmentDialog.TAG);
}