【问题标题】:How to disable a button for multiple click?如何禁用多次单击的按钮?
【发布时间】:2017-12-21 07:33:03
【问题描述】:

我有一个按钮,单击时会显示一个对话框。但是当您多次快速单击该按钮时,它会在屏幕上显示2个或更多对话框。取决于您在对话框显示之前单击按钮的次数。所以我必须多次关闭每个对话框...

我已经用过dialog.isShowing,但是当你快速点击按钮多次时它似乎会忽略它。

...所以我想在对话框关闭时单击按钮。

private var mFlag = false

    fun myButton(view : View) {
        var tempDialog = AlertDialog.Builder(this).create()

        if (!mFlag) {
            myDialog.show()
            mFlag = true
        }

        if(dialog.isShowing){
           mFlag = false
        }
    }

【问题讨论】:

  • 能否请您描述得更详细一些,这很容易混淆您要说的内容。我想在这方面为您提供帮助。
  • 我有显示n alertdialog 的按钮...在不到1秒的时间内多次单击它,它将显示许多对话框...
  • 感谢@ManthanPatel。你如何把答案部分放在一个链接上。

标签: android dialog kotlin


【解决方案1】:

我已经公开了避免双击问题的方法。

请检查此方法,

/***
 * To prevent from double clicking the row item and so prevents overlapping fragment.
 * **/
public static void avoidDoubleClicks(final View view) {
    final long DELAY_IN_MS = 900;
    if (!view.isClickable()) {
        return;
    }
    view.setClickable(false);
    view.postDelayed(new Runnable() {
        @Override
        public void run() {
            view.setClickable(true);
        }
    }, DELAY_IN_MS);
}

您可以通过以下方式使用该方法,

  buttonTest.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(String clickedText) {
                                                       Utils.avoidDoubleClicks(alertViewHolder.tv_alert);

    // Rest code here for onlick listener 

});

或者另一种方式是,

private long lastClickTime = 0;

View.OnClickListener buttonHandler = new View.OnClickListener() {
    public void onClick(View v) {
        // preventing double, using threshold of 1000 ms
        if (SystemClock.elapsedRealtime() - lastClickTime < 1000){
            return;
        }

        lastClickTime = SystemClock.elapsedRealtime();
    }
}

【讨论】:

  • 很好,但我不想使用延迟发布...出于某种原因 - 内存泄漏?!..
  • 我添加了另一种避免双击问题的方法,请查看答案
  • 是的,但我只有不到 15 个代表,所以它不会公开显示
  • 为我工作,谢谢,但如果延迟后我有按钮的背景颜色,材质按钮上会显示波纹效果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多