![](/img/trans.png)
[英]How do I make a program where I can keep adding 1 to a value when a button is clicked?
[英]How do I make a Button which restarts a CountdownTimer, when clicked?
我有一個帶有計時器的函數,每當您單擊該按鈕時,我都希望它“重新啟動”。 我嘗試執行此操作,但是當多次單擊按鈕時,似乎只有幾個定時器仍在運行。 我該如何解決?
因此,onClick =>取消上一個計時器=>啟動新計時器
public void startService(android.view.View view) {
final SharedPreferences sP = getSharedPreferences("com.example.safetyNet", MODE_PRIVATE);
final Button button = findViewById(R.id.button3);
final Intent transIntent = new Intent(this, CheckPinActivity.class);
CountDownTimer cdt = new CountDownTimer(sP.getInt("TiT", 10) * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
button.setText(String.valueOf(millisUntilFinished).substring(0,2));
}
@Override
public void onFinish() {
if(sP.getBoolean("lockedDown", false) == true){
startActivity(transIntent);
}
}
};
cdt.cancel();
cdt.start();
}
問題在於,每次調用方法“ startService(android.view.View view){}”時,都會創建一個新的CountDownTimer,因此之前創建的CountDownTimer與該引用不同。
為了解決這個問題,您將必須創建CountDownTimer作為類的類成員:
public YourClass {
private CountDownTimer cdt;
.... (do whatever)....
public void startService(android.view.View view) {
final SharedPreferences sP = getSharedPreferences("com.example.safetyNet", MODE_PRIVATE);
final Button button = findViewById(R.id.button3);
final Intent transIntent = new Intent(this, CheckPinActivity.class);
if (cdt == null) {
cdt = new CountDownTimer(sP.getInt("TiT", 10) * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
button.setText(String.valueOf(millisUntilFinished).substring(0,2));
}
@Override
public void onFinish() {
if(sP.getBoolean("lockedDown", false) == true){
startActivity(transIntent);
}
}
};
} else {
cdt.cancel();
}
cdt.start();
}
希望對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.