当前,在我的Android游戏中,有一个简单的线程在运行,每X毫秒将水平进度条减少1。我正在尝试实现一种方法,以便当进度栏达到0时,TextView变为“ Game Over”。 只要以此方式调用此函数,应用程序就会崩溃。我还正确地初始化了变量,因此该方法可以很容易地看到此TextView。
public class MyThread extends Thread{
@Override
public void run(){
while (counter > 0 && keepRunning){
counter = counter - 1;
android.os.SystemClock.sleep(calculateSleepTick());
mHandler.post(new Runnable() {
@Override
public void run() {
progressTest.setProgress(counter);
}
});
}
isGameOver();
}
}
public void isGameOver(){
scoreText.setText("Game Over");
}
答案 0 :(得分:2)
您的isGameOver函数设置UI元素的文本。您不能在main以外的线程上调用UI元素的函数。需要将其发布到UI线程中。
答案 1 :(得分:1)
您不能在非UI线程中更新UI。以这种方式致电isGameOver()
。
runOnUiThread(new Runnable() {
@Override
public void run() {
isGameOver();
}
});