2013-06-22 37 views
0

我想在事件之間使用定時器,例如:用戶必須在點擊按鈕之間等待30秒,我該怎麼做?兩個事件之間的定時器

Button b=(Button)findViewById(R.id.button1); 
b.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

    } 
}); 

回答

2

您是說該按鈕應該每30秒只能點擊一次?在這種情況下,我會做這樣的事情:

public void onClick(View v) { 
    long time = System.System.currentTimeMillis(); 
    if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){ 
     lastClickTime = time; 
     ... 
    } 
} 
+0

謝謝:)它'工作 –

1

您可以使用單獨的ThreadpostDelayed

This SO answer展示瞭如何做到這一點,以及其他幾個選項

你會在你的onClick()然後禁用Button在重新啓用您的run()功能

Handler

TimerTask

A CountDownTimer將是另一種方式。你只需重新啓用ButtononFinish()

你可以看看這些,看看哪些工作最適合你的特殊情況

這些都是一些的,你可以做到這一點的方式。但是,如果您在此告訴我們您的最終比賽,我們可能會幫助您找到更好的方法。您不希望用戶無法在30秒內完成任何操作

0

你可以使用一個處理程序的postDelayed方法是這樣的:

Button b; // instance variable 


// now in onCreate 


b = (Button)findViewById(R.id.button1);  

final Handler handler = new Handler(); 

handler.postDelayed(new Runnable() { 

    @Override 
    public void run() { 
     OuterClass.this.b.setEnabled(true); 
    } 

}, 30000); // 30 seconds = 30000 ms 


b.setEnabled(false); 


b.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) {   
     // do whatever you have to do 
    } 

}); 
相關問題