【问题标题】:How can I stop counting number of clicks when countdown timers stops?当倒数计时器停止时,如何停止计算点击次数?
【发布时间】:2015-10-28 18:37:25
【问题描述】:

由于我是 android 新手,请帮帮我。在我的应用程序中,当我单击文本框时,它开始计算点击次数,并且当倒计时计时器启动后单击文本框时。我希望我的计数器 (mCount) 停止当倒计时计时器完成时,我还希望当计时器完成时,没有人可以单击文本框,这意味着在用户按下重置按钮之前,文本框变得不可点击。提前致谢!

这是我的代码: 文本视图电视,t1;

Button reset;
private int mCount = 0;
private final long startTime = 5 * 1000;
private final long interval = 1 * 1000;
private CountDownTimer countDownTimer;
private boolean timerStarted = false;
private MediaRouteButton textView2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_play_game);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    tv  = (TextView)findViewById(R.id.tv1);
    tv.setText("5"); // starting from 5.
    reset=(Button)findViewById(R.id.reset);
    final TextView countTextView = (TextView) findViewById(R.id.TextViewCount);
    t1=(TextView)findViewById(R.id.textView2);
    countDownTimer = new MyCountDownTimer(startTime, interval);
    t1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!timerStarted) {
                countDownTimer.start();
                timerStarted = true;

            }
            mCount++;
            countTextView.setText("SCORE: " + mCount);
        }


    });
 reset.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = getIntent();
         finish();
         startActivity(intent);
     }
 });

}
public class MyCountDownTimer extends CountDownTimer {

    private TextView mTextField;

    public MyCountDownTimer(long startTime, long interval) {

        super(startTime, interval);

    }

    @Override

    public void onFinish() {



        mTextField.setText("done!");

    }


    @Override

    public void onTick(long millisUntilFinished) {

        tv.setText("" + millisUntilFinished / 1000);

    }
}

}

【问题讨论】:

    标签: android timer


    【解决方案1】:

    当计时器结束时,您可以使用View.setClickable(boolean)暂时禁用点击:

    public void onFinish(){
       mTextField.setText("done!");
       t1.setClickable(false);
    }
    

    您可以在重新启动计时器最方便的时候将可点击状态改回。

    【讨论】:

    • 我在 XML 中设置了 android:clickable=true 并按照您在我的 main_activity.java 中所说的操作。当我在我的设备上运行此应用程序时,它显示您的应用程序在计时器停止后不幸崩溃了。现在该怎么办?
    • @abhisheksharma 这取决于堆栈跟踪是什么。是什么导致它崩溃?
    【解决方案2】:

    只需保持在计时器停止时为真的标志,并在增加计数器之前检查标志是否为假

    【讨论】:

    • 公共布尔标志=false;在 timestop 上使其为真并在递增之前检查标志是否为真
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多