таймер не реагирует - PullRequest
       19

таймер не реагирует

0 голосов
/ 09 апреля 2020

Я слежу за онлайн-курсом android, и я делаю эту задачу, где я делаю таймер, который я контролирую значение с помощью панели поиска, а затем начинаю обратный отсчет при нажатии кнопки, моя проблема, когда я, кажется, чтобы нажать кнопку, CountDownTimer () не работает вообще, я попытался напечатать текущее значение таймера в журнале и на тосте, но, кажется, он вообще не реагирует, я добавил тостовое сообщение в нескольких местах, чтобы определить, где проблема, и я пришел к выводу, что это был таймер обратного отсчета ** Метод StartTimer () является методом onclick для кнопки

package com.example.timer;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Timer;

public class MainActivity extends AppCompatActivity {
    SeekBar TimeSelector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TimeSelector= findViewById(R.id.TimeSelector);
        TimeSelector.setMax(900);
        TimeSelector.setProgress(30);
        TimeSelector.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
               updateTimer(i);

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }

    public void updateTimer(int sedcondLeft){
        Toast.makeText(getApplicationContext(),""+ sedcondLeft,Toast.LENGTH_SHORT).show();

        final TextView TimeLeft =findViewById(R.id.TimeLeft);
        int minutes = (int) sedcondLeft/60;
        int seconds=(int) sedcondLeft- minutes*60;
        if (seconds<10){
            TimeLeft.setText(minutes + " : 0" + seconds);
        }
        else{
            TimeLeft.setText(minutes + " : " + seconds);
         }
    }

    public void StartTimer(View v) {
        new CountDownTimer(TimeSelector.getProgress()*1000, 1000) {
            @Override
            public void onTick(long l) {
                updateTimer(TimeSelector.getProgress()-1);
            }

            @Override
            public void onFinish() {

            }
        };
    }
}
...