Двойной щелчок на BottomSheetDialog быстро дает два диалога - PullRequest
0 голосов
/ 01 июня 2019

У меня есть фрагмент диалога нижнего листа, который я использую в качестве меню для моей нижней панели приложения.

Если я щелкаю по значку меню очень быстро два раза, диалоговое окно появляется два раза, и мне нужнозакройте его два раза, что раздражает.

Мой код выглядит следующим образом:

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
}
}

Кто-нибудь может помочь?Спасибо

1 Ответ

1 голос
/ 01 июня 2019

Вы можете сделать небольшой взлом здесь. Вот код

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 секунду в коде ниже.
...