Android用户输入到倒数计时器

时间:2015-03-21 07:49:25

标签: android countdowntimer

我正在使用倒数计时器,用户输入有多少秒倒计时。

 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;

1 个答案:

答案 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。那就是它。

相关问题