我正在使用倒数计时器,用户输入有多少秒倒计时。
private void showTimer() {
myString = ((EditText)editTextTimer).getText().toString();
int countdownMillis = Integer.parseInt(myString) * 1000;
if (timer != null) {
timer.cancel();
}
timer = new CountDownTimer(countdownMillis, MILLIS_PER_SECOND) {
@Override
public void onTick(long millisUntilFinished) {
((TextView) countdownDisplay).setText("Counting down: " +
millisUntilFinished / MILLIS_PER_SECOND);
((TextView) countdownDisplay).setTextSize(25);
}
@Override
public void onFinish() {
((TextView)countdownDisplay).setText("Time's Up !");
((TextView)countdownDisplay).setTextSize(25);
}
}.start();
}
我在片段上这样做。问题是" Time' Up"的文本显示。插入时间后点击开始。当再次点击开始时,计时器将开始显示和倒计时。计时器有时会跳过1秒钟。
示例用户插入10。 它将从10,9,7,6,5,4,3,2,1,18倒计时。
onCreatView
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_countDown, container, false);
countdownDisplay = rootView.findViewById(R.id.txtTimerLeft);
editTextTimer = rootView.findViewById(R.id.txtTimer);
startbutton = rootView.findViewById(R.id.button_start1);
startbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
try {
showTimer();
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
});
return rootView;
}
声明
View editTextTimer;
View startbutton;
private static final int MILLIS_PER_SECOND = 1000;
int SECONDS_TO_COUNTDOWN;
View countdownDisplay;
private CountDownTimer timer;
String myString;
答案 0 :(得分:0)
您正在传递SECONDS_TO_COUNTDOWN * MILLIS_PER_SECOND
,首先尝试它会为0,并且只在SECONDS_TO_COUNTDOWN
函数内初始化showTimer
。走那条路:
private void showTimer() {
myString = ((EditText)editTextTimer).getText().toString();
int countdownMillis = Integer.parseInt(myString) * 1000;
不要在函数中传递任何内容并从editText中读取值。您可以删除SECONDS_TO_COUNTDOWN
。那就是它。