Android无效()不更新textView

问题描述:

我试图做一个textView更新旁边的定时循环。我试过每次循环都使它失效()。这似乎工作,但计时器启动时,应用程序崩溃。Android无效()不更新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); 

} 

这里有2 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

哪有我这样做?对不起,我是Java新手。 – moxide

+0

没关系,通过把代码放在这里http://*.com/questions/12850143/android-basics-running-code-in-the-ui-thread进入计时器来计算出来。感谢您的帮助(: – moxide

替换:

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

要:

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(); 
      } 
     }); 
    } 
};