单击2秒后禁用按钮并继续返回

时间:2017-07-17 05:30:00

标签: android android-layout

当我第一次点击重发按钮时,该按钮将禁用2秒钟.2秒后按钮将启用? 我正在使用此代码

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            btn.setEnabled(false);
            btn.postDelayed(new Runnable() {
                public void run() {
                    btn.setEnabled(true);
                    Log.d(TAG,"resend1");
                }
            },1000);
        }
    });

但是这段代码运行不正常。

3 个答案:

答案 0 :(得分:6)

为此目的尝试此操作,您可以使用处理程序(import android.os.Handler;

  btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btn.setEnabled(false);

     new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            // This method will be executed once the timer is over
                btn.setEnabled(true);
                Log.d(TAG,"resend1");

        }
    },2000);// set time as per your requirement 
    }
});

答案 1 :(得分:1)

您可以使用计时器

   btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               myButton.setEnabled(false);

    Timer buttonTimer = new Timer();
    buttonTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    myButton.setEnabled(true);
                }
            });
        }
    }, 5000);
            }
        });

答案 2 :(得分:0)

找到解决方案

  1. 点击按钮

     long  mLastClickTime;
     yourButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            disableButtonTwoSecs();
          // Here your implementation
    
        }
    });
    
    public static boolean disableButtonTwoSecs() {
    if (SystemClock.elapsedRealtime() - mLastClickTime < 2000) {
        return true;
    }
    mLastClickTime = SystemClock.elapsedRealtime();
    return false;
    }