无法正常使用处理程序

问题描述 投票:0回答:1

我开始学习Android的发展。我是建立一个基本的除了游戏,用户必须点击按钮,显示增加了两个号码。有四个Textviews。第一个给time limit每个回答的问题。其次给出了用户的question。第三个向用户提供的current score,最后一个给所选择的开放是否正确或不正确的。一切正常,除了第一个按钮。每当按下按钮时的计数需要非常快的。

Screenshot

// 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);
    }
    //=================================================================//

// Updater function

public void update() {

        correctIncorrect.setVisibility(View.INVISIBLE);
        Random random = new Random();
        int a = random.nextInt(21);
        int b = random.nextInt(21);
        question.setText(Integer.toString(a) + " + " + Integer.toString(b));
        Log.i("info", "onCreate: a = " + a);
        Log.i("info", "onCreate: b = " + b);
        sum = a+b;
        Log.i("info", "onCreate: sum = " + sum);
        int whichButton = random.nextInt(4);
        Log.i("info", "onCreate: random button is " + whichButton);
        values.clear();
        for (int i = 0; i< 4; i++) {
            if (i == whichButton) {
                values.add(sum);
            }
            else {
                values.add(random.nextInt(50));
            }
            Log.i("info", "onCreate: value[" + i + "] = " + values.get(i));
        }
        button1.setText(Integer.toString(values.get(0)));
        button2.setText(Integer.toString(values.get(1)));
        button3.setText(Integer.toString(values.get(2)));
        button4.setText(Integer.toString(values.get(3)));
        temp = 10;
        resetTimer();
}

我使用的处理程序是否有误?我能做什么?

java android runnable android-handler
1个回答
0
投票

我使用的处理程序是否有误?我能做什么?

一个更好的办法来做到这一点是qazxsw POI,用这个你就不必处理处理程序你自己,你也有一个规定取消运行CountDownTimer。

一切正常,除了第一个按钮

真的不知道有什么可以对按键的点击与的onClick相同的代码会导致不同的行为()。但是你可以考虑使用相同的onClickListener所有的4个按钮,以这种方式:

CountDownTimer

这将确保单击任何4个按键都会有相同的行为(根据课程的答案)

如果你感到困惑与CountDownTimer的onTick()方法,你可以使用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); 这将确保定时器不会错过任何蜱。

© www.soinside.com 2019 - 2024. All rights reserved.