android - 无法让倒数计时器在我的程序中工作或显示

标签 android textview countdowntimer do-loops

我是一名新程序员,这是我的第一个项目,但我在使用三个应该一个接一个运行的计时器制作适当的循环时遇到了一些麻烦。我设法让对象在循环中保存它们应该保存的值,但出于某种原因,计时器没有像它应该的那样显示在文本字段中。

          startBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i("mTimer:", String.valueOf(mTimer));
            Log.i("mReps:", String.valueOf(mReps));
            Log.i("Flexion:", String.valueOf(flexionTimer));
            Log.i("Hold:", String.valueOf(holdTimer));
            Log.i("Extension:", String.valueOf(extensionTimer));

            for (int iter = 0; iter < mReps; iter++) {
                Log.i("Loop:", String.valueOf(iter));

                final Timer workingFlexionTimer = new Timer();
                workingFlexionTimer.schedule(new TimerTask() {
                    int counter = ((int) flexionTimer / 1000);
                    @Override
                    public void run () {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                mPhase.setText("Flexion");
                                mCountDownTimer.setText("" + String.format(String.valueOf(counter + 1)));
                            }
                        });
                        if (counter-- == 0) {
                            workingFlexionTimer.cancel();
                        }
                    }
                }, 0, 1000);


                final Timer workingHoldTimer = new Timer();
                workingHoldTimer.schedule(new TimerTask() {
                    int counter = ((int) holdTimer / 1000);
                    @Override
                    public void run() {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                mPhase.setText("Hold!!!");
                                mCountDownTimer.setText("" + String.format(String.valueOf(counter + 1)));
                            }
                        });
                        if (counter-- == 0) {
                            workingHoldTimer.cancel();
                        }
                    }
                }, flexionTimer, 1000);

                final Timer workingExtensionTimer = new Timer();
                workingExtensionTimer.schedule(new TimerTask() {
                    int counter = ((int) extensionTimer / 1000);
                    @Override
                    public void run() {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                mPhase.setText("Extension");
                                mCountDownTimer.setText("" + String.format(String.valueOf(counter + 1)));
                            }
                        });
                        if (counter-- == 0) {
                            workingExtensionTimer.cancel();
                        }
                    }
                }, (flexionTimer + holdTimer), 1000);
            }

此时我有点不知所措,如有任何建议,我们将不胜感激。

最佳答案

使用处理器


    private void Timer() {
        handler = new Handler();
        Run =new Runnable() {
        @Override
        public void run() { //Do something after 10 sec
        Toast.makeText(getActivity(), "Timer called!",Toast.LENGTH_LONG).show();
        Timer(); // Do again                
        }};
        handler.postDelayed(Run , 10000);  // 10 sec
    }

关于android - 无法让倒数计时器在我的程序中工作或显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45757632/

相关文章:

java - 如何在 java android 中将 ellipsize 设置为两行或多行 textview

javascript - 如何停止和重置我的倒数计时器?

android - 使用许多 fragment 是一种不好的做法吗?

c# - 以编程方式打开/关闭 WiFi 热点

android - Textview出现屏幕时调用的TextView方法?

java - 分数变量不会更新,并且必须是最终的?

JavaScript 获取 NaN :NaN:NaN

java - Android NFC 扫描仪问题

java - 使用操作栏从“设置”返回上一屏幕

Android:如果 ListView 中没有项目,显示 TextView 的最佳方式是什么?