猿问

无法正确使用Handler

我开始学习安卓开发。我正在构建一个基本的加法游戏,用户必须单击显示两个数字相加的按钮。有四个 Textviews。第一个给出time limit每个要回答的问题。二是给question用户。第三个给出current score用户的,最后一个给出选择的打开是正确的还是不正确的。除第一个按钮外,一切正常。每次按下按钮时,计数都会非常快。

// When First button is pressed


public void onClickButton1(View view) {

        correctIncorrect.setVisibility(View.VISIBLE);

        if (Integer.parseInt(button1.getText().toString())==sum) {

            correctIncorrect.setText("Correct");

            correctUpdater();

        }

        else {

            correctIncorrect.setText("Incorrect");

            inCorrectUpdater();

        }


}


//Similar to all the buttons



//To Update the score


public void correctUpdater() {

        n++;

        yourScore++;

        score.setText(Integer.toString(yourScore) + "/" + Integer.toString(n));

        update();

}


public void inCorrectUpdater() {

    n++;

    score.setText(Integer.toString(yourScore) + "/" + Integer.toString(n));

    update();

}



// To update the timer


//=======================================================================//

    public void resetTimer() {

        timer.setText(Integer.toString(temp)+"s");

        if (temp == 0) {

            inCorrectUpdater();

            update();

        }

        else {

            timeUpdater();

        }


    }


    public void timeUpdater() {

        Handler timeHandler = new Handler();

        Runnable timeRunnable = new Runnable() {

            @Override

            public void run() {

                temp--;

                resetTimer();

            }

        };

        timeHandler.postDelayed(timeRunnable,1000);

    }


我是否错误地使用了处理程序?我能做些什么?


蓝山帝景
浏览 250回答 1
1回答

qq_花开花谢_0

我是否错误地使用了处理程序?我能做些什么?更好的方法是CountDownTimer,通过使用它,您不必自己处理Handler并且您还可以取消正在运行的 CountDownTimer。除第一个按钮外,一切正常不太确定在 onClick() 中使用相同代码单击按钮时会导致不同行为的原因。但是您可以考虑对所有 4 个按钮使用相同的onClickListener,这样:View.OnClickListener myListener = new View.OnClickListener() {        @Override        public void onClick(View button) {            correctIncorrect.setVisibility(View.VISIBLE);            if (Integer.parseInt(button.getText().toString())==sum) {                correctIncorrect.setText("Correct");                correctUpdater();            }            else {                correctIncorrect.setText("Incorrect");                inCorrectUpdater();            }        }    };button1.setOnClickListener(myListener);button2.setOnClickListener(myListener);button3.setOnClickListener(myListener);button4.setOnClickListener(myListener);这将确保单击 4 个按钮中的任何一个都具有相同的行为(当然取决于答案)如果您对 CountDownTimer 上的 onTick() 方法感到困惑,您可以使用修改后的 CountDownTimer,这将确保计时器不会错过任何滴答声。
随时随地看视频慕课网APP

相关分类

Java
我要回答