如何禁用多次点击按钮?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁用多次点击按钮?相关的知识,希望对你有一定的参考价值。

我有一个按钮,当点击显示一个对话框。但是当您多次快速单击该按钮时,它将在屏幕上显示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
        }
    }
答案

我已经制作了公共方法,以避免在视图上双击问题。

请检查这种方法,

/***
 * 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 

});

Or another way is,

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();
    }
}

以上是关于如何禁用多次点击按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用在android片段类中按下的后退按钮

单击后如何在 React Native 中禁用按钮

导航抽屉 - 禁用点击抽屉后面的项目

多次点击提交后如何只提交一次表单?

如何禁用按钮外的点击事件?

如何在第一次提交(在客户端)后立即禁用 ASP.NET 按钮?