【问题标题】:Timers in Android Studio using CountDownTimerAndroid Studio 中使用 CountDownTimer 的定时器
【发布时间】:2021-09-21 11:31:43
【问题描述】:

请参阅我正在尝试获取用户输入的时间并使用用户输入尝试在 Android Studio 4.2.2 中运行 CountDownTimer 函数

问题是:-

案例-1

当我通过变量名称代替 countDown 计时器函数的 millisInFuture 属性并尝试相应地设置 textview 时,TextView 没有设置任何内容。。 p>

public void timer() {
        CountDownTimer countDownTimer = new CountDownTimer(**timeValueIntent**, 1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                //  mediaPlayer.setLooping(true);
                //mediaPlayer.start();
                timerValueTextView.setText(String.valueOf(millisUntilFinished / 1000) + "s");
            }

            @Override
            public void onFinish() {
                Toast.makeText(getApplicationContext(), "Timed out", Toast.LENGTH_SHORT).show();
                restartButton.setVisibility(View.VISIBLE);
                restartButton.setEnabled(true);
                quitButton.setVisibility(View.VISIBLE);
                setBtnCond(true);
                //mediaPlayer.stop();
            }
        }.start();
    }`

案例-2

但是当我在 CountDownTimer 的 millisInFuture 属性中传递 1000 等 int 值并设置 textView 时,设置成功。

public void timer() {
        CountDownTimer countDownTimer = new CountDownTimer(**300000**, 1000) {

            @Override
            public void onTick(long millisUntilFinished) {
                //  mediaPlayer.setLooping(true);
                //mediaPlayer.start();
                timerValueTextView.setText(String.valueOf(millisUntilFinished / 1000) + "s");
            }

            @Override
            public void onFinish() {
                Toast.makeText(getApplicationContext(), "Timed out", Toast.LENGTH_SHORT).show();
                restartButton.setVisibility(View.VISIBLE);
                restartButton.setEnabled(true);
                quitButton.setVisibility(View.VISIBLE);
                setBtnCond(true);
                //mediaPlayer.stop();
            }
        }.start();
    }`

谁能请帮我在 CountDownTimer 函数的 MillisInFuture 属性中传递变量名而不是硬编码的整数值。!!? `

【问题讨论】:

    标签: java android android-studio timer countdowntimer


    【解决方案1】:

    我有一些类似于你的问题的源代码,只是实现你的项目。

    初始化变量

    private static final long START_TIME_IN_MILLIS = 600000;
    private TextView mTextViewCountDown;
    private Button mButtonStartPause;
    private Button mButtonReset;
    private CountDownTimer mCountDownTimer;
    private boolean mTimerRunning;
    private long mTimeLeftInMillis = START_TIME_IN_MILLIS;
    

    onCreate

    //Init
        mTextViewCountDown = findViewById(R.id.text_view_countdown);
        mButtonStartPause = findViewById(R.id.button_start_pause);
        mButtonReset = findViewById(R.id.button_reset);
        mButtonStartPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mTimerRunning) {
                    pauseTimer();       //pauseFunction
                } else {
                    startTimer();       //StartFunction
                }
            }
        });
    
    
    
    mButtonReset.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    resetTimer();       // resetFunction
                }
            });
            updateCountDownText();      //updateEverySecond
    

    startTimer()

    mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                mTimeLeftInMillis = millisUntilFinished;
                updateCountDownText();
            }
            @Override
            public void onFinish() {
                mTimerRunning = false;
                mButtonStartPause.setText("Start");
                mButtonStartPause.setVisibility(View.INVISIBLE);
                mButtonReset.setVisibility(View.VISIBLE);
            }
        }.start();
        mTimerRunning = true;
        mButtonStartPause.setText("pause");
        mButtonReset.setVisibility(View.INVISIBLE);
    

    pauseTimer()

        mCountDownTimer.cancel();
        mTimerRunning = false;
        mButtonStartPause.setText("Start");
        mButtonReset.setVisibility(View.VISIBLE);
    

    resetTimer()

        mTimeLeftInMillis = START_TIME_IN_MILLIS;
        updateCountDownText();
        mButtonReset.setVisibility(View.INVISIBLE);
        mButtonStartPause.setVisibility(View.VISIBLE);
    

    updateCountDownText()

        int minutes = (int) (mTimeLeftInMillis / 1000) / 60;
        int seconds = (int) (mTimeLeftInMillis / 1000) % 60;
        String timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds);
        mTextViewCountDown.setText(timeLeftFormatted);
    

    最后是XML

    <TextView
        android:id="@+id/text_view_countdown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="00:00"
        android:textColor="@android:color/black"
        android:textSize="60sp" />
    <Button
        android:id="@+id/button_start_pause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_view_countdown"
        android:layout_centerHorizontal="true"
        android:text="start" />
    <Button
        android:id="@+id/button_reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_view_countdown"
        android:layout_marginStart="11dp"
        android:layout_toEndOf="@+id/button_start_pause"
        android:text="reset"
        android:visibility="invisible"
        tools:visibility="visible" />
    

    【讨论】:

    • 欢迎 Tiwary。
    • 嘿,如果你不介意我们可以通过任何其他社交平台联系,我是 Android 开发新手,也许我们可以更频繁地互相帮助。
    • @KHUSHALTiwary LinkedIn 个人资料中的 bio connect me
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2012-11-08
    相关资源
    最近更新 更多