2015-10-28 5 views
1

Поскольку я новичок в андроиде, пожалуйста, помогите мне. В моем приложении, когда я нажимаю текстовое поле, он начинает подсчитывать количество кликов и когда нажимается текстовое поле после запуска таймера обратного отсчета. Я хочу, чтобы мой счетчик (mCount) останавливался, когда CountDown таймер заканчивается, и я также хочу, чтобы при завершении таймера никто не мог щелкнуть текстовое поле, так как текстовое поле становится незаметным, пока пользователь не нажмет кнопку сброса. Заранее спасибо!Как остановить подсчет количества кликов при остановке таймера обратного отсчета?

Это мой код: TextView tv, 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); 

    } 
} 

}

ответ

0

Когда таймер можно использовать View.setClickable(boolean) отключить щелчки до поры до времени:

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

Вы можете изменить интерактивное состояние обратно всякий раз, когда это наиболее удобно для перезагрузки таймер.

+0

я установил андроид: кликабельным = True в XML и делает то, что вы сказали в мой main_activity.java .Когда Я запускаю это приложение на своем устройстве, а затем показывает, что ваше приложение, к сожалению, разбилось после остановки таймера. Теперь, что делать? –

+0

@abhisheksharma, который зависит от того, что такое трассировка стека. Что вызвало его сбой? – AdamMc331

0

просто сохранить флаг, который будет истинным на таймер останавливается и перед увеличением счетчика убедитесь, что флаг является ложным или не

+0

Не могли бы вы объяснить это с точки зрения кода? –

+0

public boolean flag = false; на timestop сделать его истинным и до инкрементного проверки, если флаг недействителен –

Смежные вопросы