Android: перед вызовом функции установите таймер с интервалом в 1 секунду.
Я пытаюсь ввести 1-секундную паузу перед сбросом игры (resetGame ()). После нажатия кнопки. текст bAnswer1 действительно равен ansewrArray[0]. Приложение force закрывается после 1-секундной задержки, установленной в newQuestionTimer ().
import java.util.Timer;
import java.util.TimerTask;
Timer timer = new Timer();
bAnswer1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(bAnswer1.getText().toString().equals(answerArray[0]))
{
bAnswer1.setBackgroundColor(Color.GREEN);
newQuestionTimer();
}
else
{
bAnswer1.setBackgroundColor(Color.RED);
guess++;
}
}
});
public void newQuestionTimer()
{
timer.schedule(new TimerTask() {
@Override
public void run() {
resetGame();
}
}, 1000);
}
2 ответов:
Вы обновляете пользовательский интерфейс с помощью таймера, который работает в фоновом потоке. Пользовательский интерфейс можно обновить только в потоке пользовательского интерфейса.
Можно использовать обработчик
Handler handler = new Handler(); handler.postDelayed(new Runnable(){ @Override public void run() { bAnswer2.setBackgroundColor(Color.TRANSPARENT); bAnswer3.setBackgroundColor(Color.TRANSPARENT); bAnswer4.setBackgroundColor(Color.TRANSPARENT); } }, 1000);
new Handler().postDelayed(new Runnable() { @Override public void run() { //your code here //you can add a block of code or a function cll //myFunction(); } }, 1000); //setting 1 second delay : 1000 = 1 secondЯ извлекаю этот образец отсюда http://wiki.workassis.com/android-execute-code-after-10-seconds
Comments