2014-03-21 2 views
0

Я уже сделал немного своей первой игры для Android, и он работает хорошо. Теперь мне нужно сделать обновление экрана как каждую секунду, чтобы мой счетчик в игре обновился.Только исходный поток, создавший иерархию представлений, может коснуться его представлений. Нет runnable

Выполнение таймера дает эту проблему:

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

Я искал stackoverflow и решил создать runnable. Я не знаю, как это работает. Я создаю один, а затем программа прерывается, потому что контекст не работает в runnable

error: constructor DrawGame in class DrawGame cannot be applied to given types; 
required: Context 
found: no arguments 
reason: actual and formal argument lists differ in length 

Что я могу сделать? Зачем мне нужен runnable. Моя игра - простая игра в шахматы.

Пытался сделать это следующим образом:

public class DrawGame extends View implements OnTouchListener { 


Timer turnTimer = new Timer("timeLeft", false); 
TimerTask countDown = new TimerTask() { 
    @Override 
    public void run() { 

     invalidate(); 

    } 
}; 




public DrawGame(Context context){ 
    super(context); 

    Turns.turnTimeCounter(); 
    Turns.yourTurn(); 
    turnTimer.scheduleAtFixedRate(countDown, 1000, 1000); 

} 

@Override 
public void onDraw(Canvas canvas){ 
//lot of code 
} 
+0

Можете ли вы показать пример кода, который выдает исключение? –

+0

[android-basics-running-code-in-the-ui-thread] (http://stackoverflow.com/questions/12850143/android-basics-running-code-in-the-ui-thread) –

+0

'program ломается, потому что контекст не работает в runnable и т. д., вы думаете, что это все, кому нужно знать, что вы знаете, какая проблема? – Simon

ответ

1

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

counter.post(new Runnable() { 

    public void run() { 
     counter.setText(newTime); 
    }  

}); 
+0

Извините, что такое счетчик? Моя IDE не понимает команду. Это какой-то объект, который вы создали? – Molehole

+0

Это ссылка на ваш взгляд. –

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

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