gpt4 book ai didi

java - 调用 onWindowFocusChange() 后更改文本

转载 作者:行者123 更新时间:2023-12-02 11:33:13 26 4
gpt4 key购买 nike

我正在尝试制作一个战斗屏幕,其中有两个 Sprite ,在它们上面有健康栏,上面写着它们的健康点(进度条上面有一个 TextView)。我还有一个AnimationDrawable。它是在 onWindowsFocusChanged() 内部启动的。我想让进度条前面的文本在动画之后发生变化。因此,例如,在动画之前,一个条形写有 150/150,而在动画之后,我希望它更改为,例如 80/150。问题是,每当我尝试调用 setText 时,应用程序就会崩溃(我猜是因为 onWindowFocusChanged 是最后调用的)。有办法做到这一点吗?

这是我的代码 fragment (number_one.start() 是动画的开始):

private void health_bars(int points_one, int points_two){

healthBarOne.setMax(MAX_HEALTH);
healthBarOne.setProgress(points_one);
health_points_one.setText(points_one + "/" + MAX_HEALTH);

healthBarTwo.setMax(MAX_HEALTH);
healthBarTwo.setProgress(points_two);
health_points_two.setText(points_two + "/" + MAX_HEALTH);

}




public void onWindowFocusChanged(final boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
Thread th = new Thread(){
public void run(){
number_one.start();
try {
Thread.sleep(2000);
} catch(InterruptedException e){
}
health_bars(new_health_one, new_health_two);

try {
Thread.sleep(2000);
} catch(InterruptedException e){
}
finish();
}
};
th.start();
attackAnimation();
}
}

感谢您的宝贵时间!

编辑: Error Log

最佳答案

您无法从 UI 之外的任何其他线程更新 UI 元素。基本上这就是错误的意思。要解决此问题,请使用 Android 中的 runOnUiThread 方法:

Thread th = new Thread(){
public void run(){
runOnUiThread(new Runnable() {
@Override
public void run() {
health_bars(new_health_one, new_health_two);
}
});
}
}

关于java - 调用 onWindowFocusChange() 后更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49133296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com