问题描述
我正在尝试学习编码。所以我决定做一个小项目,但是我坚持了。
我正在尝试制作CountDownTimer。我有3个不同的时间。例如,第一个是10秒,第二个是5秒,第三个是7秒。因此,我想制作一个从10秒开始计数的应用程序,完成后再从第二个计时器开始计数,然后从第三个计时器开始计数。
public class MainActivity extends AppCompatActivity {
private Button mStartButton;
private Button mResetButton;
private Button mStopButton;
private TextView mTextViewCountDown;
private TextView mTextViewCounter;
private CountDownTimer mCountDownTimer;
private int countme = 0 ;
private int [] array = new int[3];
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStartButton = findViewById(R.id.button_start);
mStopButton = findViewById(R.id.button_stop);
mResetButton = findViewById(R.id.button_reset);
mTextViewCountDown = findViewById(R.id.text_view_countdown);
mTextViewCounter = findViewById(R.id.text_s);
array[0]=10000;
array[1]=5000;
array[2]=70000;
mStartButton.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i = 0; i<3; i++){
mCountDownTimer = new CountDownTimer(array[i],1000) {
@Override
public void onTick(long millisUntilFinished) {
mTextViewCountDown.setText(""+ millisUntilFinished/1000);
}
@Override
public void onFinish() {
countme++;
if(countme / 3 == 3){
mCountDownTimer.cancel();
}else{
start();
} } }.start();
}
}
}); } }
我认为for循环不适合我的问题。它不会一次增加变量,我猜它会增加每一个提示。作为一个初学者,我不知道该怎么办。
解决方法
您无需进行循环尝试,例如:
private void startCountDowntimer(long millis,int count) {
count ++;
int finalCount = count;
new CountDownTimer(millis,1000) {
@Override
public void onTick(long millisUntilFinished) {
mTextViewCountDown.setText(""+ millisUntilFinished/1000);
}
@Override
public void onFinish() {
if (finalCount == 1) {
startCountDowntimer(5000,1);
} else if (finalCount == 2) {
startCountDowntimer(7000,2);
} else {
//all finished
}
}
}.start();
}
并在按钮上单击:
mStartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startCountDowntimer(10000,0);
}
});