У меня есть два CountDownTimers в моей программе: 4-секундный и 24-секундный. Я хочу, чтобы более длинный таймер был приостановлен на каждые 4 секунды, когда работает более короткий таймер. Затем, когда короткий таймер заканчивается, длительный таймер начинает отсчет. Вот код для двух таймеров:Как я могу приостановить один таймер CountDown, когда работает другой?
final CountDownTimer loop = new CountDownTimer(4000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
number.setVisibility(View.GONE);
final TextView prompt = (TextView) findViewById(R.id.prompt);
prompt.setVisibility(View.VISIBLE);
prompt.setText(" Enter the number");
final EditText input = (EditText) findViewById(R.id.enterAnswer);
input.setVisibility(View.VISIBLE);
input.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
Editable answer = input.getText();
int finalAnswer = Integer.parseInt(String.valueOf(answer));
int finalLoadG1 = Integer.parseInt(String.valueOf(number.getText()));
input.setVisibility(View.GONE);
prompt.setVisibility(View.GONE);
if (finalAnswer == finalLoadG1) {
score++;
}
number.setVisibility(View.VISIBLE);
int loadG1 = generateG1.nextInt(1000000)+10000;
number.setText(""+loadG1);
input.getText().clear();
start();
return true;
default:
}
}
return false;
}
});
}
}.start();
new CountDownTimer(24000, 1000) {
@Override
public void onTick (long millisUntilFinished) {
}
@Override
public void onFinish() {
TextView result = (TextView) findViewById(R.id.outcome);
result.setText("Score: "+ score);
TextView prompt = (TextView) findViewById(R.id.prompt);
prompt.setVisibility(View.GONE);
final EditText input = (EditText) findViewById(R.id.enterAnswer);
input.setVisibility(View.GONE);
loop.cancel();
number.setVisibility(View.GONE);
}
}.start();
Я думал об именовании более длительный таймер, затем положить name.pause() в OnTick за короткий таймер. Проблема заключается в том, что, поскольку более длинный таймер записывается после более короткого, это имя не распознается до того, как оно было инициализировано. Java читает все в порядке, не так ли? Или это все языки?
Если бы кто-нибудь мог мне помочь, я был бы благодарен.
В качестве побочного вопроса для любого, кто может ответить, существует ли способ предотвратить сбой приложения при нажатии пользователем на EditText (предназначенном для int), чтобы ничего не отправлять? Например, могу ли я просто продолжить приложение без принудительной остановки?
Большое спасибо заранее.
вместо 'нового CountDownTimer' вы должны сделать класс, который расширяет Таймер обратного отсчета. Тогда он доступен внутри вашего короче ...... – Opiatefuchs