Android取消CountDownTimer对onClick的不同功能

时间:2016-05-02 13:56:22

标签: java android

我要做的是将TextView设置为计时器计数器,计数器从60计数到0.但问题是,如果用户可以猜出正确的数字,我无法取消计时器进入下一个级别。到目前为止我尝试的是,在另一个有效onClick的函数下取消它。但我得到一个错误,说它不能在onClick下调用。

这是代码

public class MainActivity extends AppCompatActivity {

    MediaPlayer guessButtonPlayer;
    MediaPlayer silButtonPlayer;
    MediaPlayer numberButtonPlayer;
    MediaPlayer winButtonPlayer;

    int bolum = 1;
    int seviye = 1;
    int gameScale = 20;
    CountDownTimer timer;
    Boolean isTimerActive = true;

    public void checkGuess(View view){

        guessButtonPlayer.start();
        EditText usersGuess = (EditText) findViewById(R.id.userGuess);

        if(usersGuess.getText().toString().isEmpty()){
            TextView  bilgiEkrani2 = (TextView)                                                 findViewById(R.id.bilgiEkrani2);
            bilgiEkrani2.setText("Lütfen bir sayı giriniz.");

        } else {
            String usersGuessString = usersGuess.getText().toString();
            int usersGuessInt = Integer.parseInt(usersGuessString);

            if(usersGuessInt > randomNumber){
                TextView  bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
                bilgiEkrani2.setText("Daha küçük bir sayı dene.");
                usersGuess.setText("");
            } else if(usersGuessInt < randomNumber) {
                TextView  bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
                bilgiEkrani2.setText("Daha büyük bir sayı dene.");
                usersGuess.setText("");
            } else {
                bolum += 1;
                isTimerActive = false;
                TextView sonMesaj = (TextView) findViewById(R.id.sonmesaj);
                sonMesaj.setText("Tebrikler Bildiniz!");

                LinearLayout tekrarOynaLayout = (LinearLayout)findViewById(R.id.yenidenOyna);
                tekrarOynaLayout.setVisibility(View.VISIBLE);
            }
        }
    }

    public void sonrakiBolum(View view) {

        TextView bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
        TextView bilgiEkrani2 = (TextView) findViewById(R.id.bilgiEkrani2);
        TextView bolumEkrani = (TextView) findViewById(R.id.bolum);
        bolumEkrani.setText("Bölüm: " + bolum);

        TextView seviyeEkrani = (TextView) findViewById(R.id.seviye);
        seviyeEkrani.setText("Seviye: " +seviye);

        if(bolum%5 == 0){
            bolum =0;
            seviye +=1;
            gameScale +=10;
        }

        bilgiEkrani2.setText("");

        LinearLayout tekraroynaLayout = (LinearLayout) findViewById(R.id.yenidenOyna);
        tekraroynaLayout.setVisibility(View.INVISIBLE);

        TextView numbersil = (TextView) findViewById(R.id.userGuess);
        numbersil.setText("");

        Random randomGenerator = new Random();

        randomNumber = randomGenerator.nextInt(gameScale) + 1;

        Specc randomSayi = new Specc();

        randomSayi.num = randomNumber;

        if (randomSayi.isSquare()) {
            bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında başka bir sayının karesidir.");
        } else if (randomSayi.isPrime()) {
            bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında bir asal sayıdır.");
        } else {
            bilgiEkrani.setText("Sayımız " + "1-" + gameScale + " arasında belirli bir özelliği olmayan bir sayıdır.");
        }

    }

    public void updateTimer(int secondsLeft){

        TextView sureEkrani = (TextView) findViewById(R.id.sure);

        int seconds = secondsLeft;

        sureEkrani.setText("Süre: " +Integer.toString(seconds));

        if(secondsLeft == 0 ){
            sureEkrani.setText("Süre:0");
        }


    }

    public void timerControl(Boolean sayi){

        if(isTimerActive) {

            final TextView sureEkrani = (TextView) findViewById(R.id.sure);

            timer = new CountDownTimer(60000, 1000) {
                @Override
                public void onTick(long l) {

                    updateTimer((int) l / 1000);
                }

                @Override
                public void onFinish() {
                    sureEkrani.setText("0");
                }
            };

            timer.start();
        } else {
            TextView sureEkrani = (TextView) findViewById(R.id.sure);
            sureEkrani.setText("0");
            timer.cancel();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        timerControl(true);

        guessButtonPlayer = MediaPlayer.create(this, R.raw.guessbutton);
        silButtonPlayer = MediaPlayer.create(this, R.raw.silbutton);
        numberButtonPlayer = MediaPlayer.create(this, R.raw.numberbuttons);
        winButtonPlayer = MediaPlayer.create(this, R.raw.winmusic);


        TextView userGuess = (TextView) findViewById(R.id.userGuess);

        userGuess.setInputType(InputType.TYPE_NULL);
        if (Build.VERSION.SDK_INT >= 11){
            userGuess.setRawInputType(InputType.TYPE_CLASS_TEXT);
            userGuess.setTextIsSelectable(true);
        }

        Random randomGenerator = new Random();

        randomNumber = randomGenerator.nextInt(gameScale)+1;

        Specc randomSayi = new Specc();

        randomSayi.num = randomNumber;

        if(randomSayi.isSquare()){
            TextView  bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
            bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında başka bir sayının karesidir.");
        } else if(randomSayi.isPrime()) {
            TextView  bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
            bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında bir asal sayıdır.");
        } else {
            TextView  bilgiEkrani = (TextView) findViewById(R.id.bilgiEkrani);
            bilgiEkrani.setText("Sayımız "+"1-"+gameScale+" arasında belirli bir özelliği olmayan bir sayıdır.");
        }

    }
}

0 个答案:

没有答案