如何判断按钮是否未在Android中单击?

时间:2017-02-17 21:19:12

标签: android

我有一个倒计时器,如果用户没有点击偶数上的这个按钮,我需要执行某种方法来结束我的游戏。所以基本上如果用户停止点击我需要gameOver()方法调用。

import android.app.Activity;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class GameScreen extends Activity {

    private TextView time;
    private Button start;
    private Button cancel;
    private Button gameButton;
    private CountDownTimer countDownTimer;
    public static int count = 0;
    int foo = Integer.parseInt(time.getText().toString());

    private View.OnClickListener btnClickListener = new View.OnClickListener(){

        @Override
        public void onClick(View v) {

            switch(v.getId()){
                case R.id.start_ID :
                    start();
                    break;
                case R.id.cancel :
                    cancel();
                    break;
                case R.id.gameButton_ID :
                    gameButton();
                    break;
            }

        }


    };


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

        start = (Button) findViewById(R.id.start_ID);
        start.setOnClickListener(btnClickListener);
        cancel = (Button) findViewById(R.id.cancel);
        cancel.setOnClickListener(btnClickListener);
        time = (TextView) findViewById(R.id.time);
        gameButton = (Button) findViewById(R.id.gameButton_ID);
        gameButton.setOnClickListener(btnClickListener);

    }

    public void start(){
        time.setText("15");
        countDownTimer = new CountDownTimer(15 * 1000, 1000) {
            @Override
            public void onTick(long millsUntilFinished){
                time.setText("" + millsUntilFinished / 1000);

                //this doesnt work and makes app crash when you hit start button
                if((gameButton.isPressed() != true) && foo  % 2 == 0){
                    gameOver();
                }
            }

            public void onFinish(){
                time.setText("Done !");
            }
        };
        countDownTimer.start();
    }

    private void cancel(){
        if(countDownTimer != null){
            countDownTimer.cancel();
            countDownTimer = null;
        }
    }

    private void gameOver(){
        Toast.makeText(getApplicationContext(), "You scored " + count, Toast.LENGTH_SHORT).show();
        count = 0;
        cancel();
    }


    private void gameButton(){

        if(foo  % 2 == 0 ) {
            Toast.makeText(getApplicationContext(), "PASS", Toast.LENGTH_SHORT).show();
            ++count;
        }

        else{
            gameOver();
        }
    }

}

2 个答案:

答案 0 :(得分:0)

编辑: 您可以使用TimerTask定期验证按钮是否被点击。您不再需要 counterBTnnotclicked 变量。

所以你可以这样做:(我试着快速写下来,所以要注意这一点)

class BtnClickIntegerHolder{

   public int counterBtnClicked = 0;
}

class BtnClicksCheckerIntegerHolder{

   public int btnClicks  = 0;
}

final BtnClickIntegerHolder btnClickCounter = new BtnClickIntegerHolder();


    yourButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    btnClickCounter.counterBtnClicked = btnClickCounter.counterBtnClicked + 1;
                }
            });
         int period = 10000; // repeat every 10 secs.

           final BtnClicksCheckerIntegerHolder btnClicksHolder = new BtnClicksCheckerIntegerHolder();
btnClicksHolder.btnClicks = btnClickCounter.counterBtnClicked;

            Timer timer = new Timer();

            timer.scheduleAtFixedRate(new TimerTask() {

                public void run() {

                    if(btnClickCounter.counterBtnClicked == btnClicksHolder.btnClicks ){
                        //Button was not clicked
                    }
                    else{
                        //Button was  clicked
                    }

btnClicksHolder.btnClicks = btnClickCounter.counterBtnClicked;
                }

            }, period, period);

答案 1 :(得分:0)

你能做的就是拿一个名为isClickedOnEvenNumber的布尔值。现在,当偶数将isClickedOnEvenNumber设置为

时按下按钮
isClickedOnEvenNumber = true;

现在检查每次勾选检查

if(isClickedOnEvenNumber)
     //continue game
else
     //end game