2016-11-13 24 views
0

Я пытаюсь сделать обновление textView рядом с синхронизированным циклом. Я пробовал сделать его invalidate() каждый раз, когда он петли. Кажется, что это работает, но приложение запускается при запуске таймера.Android invalidate() не обновляет textView

Вот петля:

private Timer timer; 
private TimerTask timerTask = new TimerTask() { 
    @Override 
    public void run() { 
     thangO += 10; 
     textypoo.setText(Integer.toString(thangO)); 
     textypoo.invalidate(); 
    } 
}; 

public void start() { 
    if (timer != null) { 
     return; 
    } 
    timer = new Timer(); 
    timer.scheduleAtFixedRate(timerTask, 0, 2000); 
} 

Вот OnCreate, где я инициализировать некоторые вещи:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    Intent intent = getIntent(); 
    textypoo = (TextView)findViewById(R.id.textmcview); 

} 

Здесь находятся два метода OnClick. Один, который обновляет TextView всякий раз, когда я нажимаю его, а другой, что вызывает таймер:

public void sendthestuff(View view) { 
    setContentView(R.layout.activity_second); 
    textypoo = (TextView) findViewById(R.id.textmcview); 
    thangO++; 
    message = Integer.toString(thangO); 
    textypoo.setText(message); 


} 

public void bazinga(View view) { 
    start(); 
} 
+0

попробовать с пробегом на Ui нить – Saveen

+0

Как может Я делаю это? Извините, я новичок в Android-стороне Java. – moxide

+0

Ничего, подумал, поставив код здесь http://stackoverflow.com/questions/12850143/android-basics-running-code-in-the-ui-thread в таймер. Спасибо за помощь (: – moxide

ответ

0

Заменить:

private TimerTask timerTask = new TimerTask() { 
    @Override 
    public void run() { 
     thangO += 10; 
     textypoo.setText(Integer.toString(thangO)); 
     textypoo.invalidate(); 
    } 
}; 

To:

private TimerTask timerTask = new TimerTask() { 
    @Override 
    public void run() { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       thangO += 10; 
       textypoo.setText(Integer.toString(thangO)); 
       textypoo.invalidate(); 
      } 
     }); 
    } 
}; 

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

  • Нет связанных вопросов^_^