2017-07-17 112 views
1

當我第一次點擊重新發送按鈕時,該按鈕會禁用2秒。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); 
     } 
    }); 

但是,此代碼無法正常工作。

回答

2

嘗試一下本作這個目的,你可以使用處理器(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

感謝兄弟的工作 –

+0

@VivekAnnamlai最受歡迎 –

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); 
      } 
     }); 
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; 
    } 
    
+0

謝謝Rajasekhar .... –