正如你可以看到的方法refreshProgressBars()只工作一次,虽然Toast创建没有中断。 这怎么可能?为什么Runnable中的方法只能运行一次?
bREnemyRegeneration = new Runnable() {
@Override
public void run() {
refreshProgressBars(); //method works only 1 time
Toast.makeText(//works always
BattleActivity.this,
"THIS TOAST WILL BE SHOWN",
Toast.LENGTH_SHORT).show();
bHandlerTimers.postDelayed(bREnemyRegeneration, 3000); //start new iteration of this Runnable
}
};
万一方法refreshProgressBars():
public void refreshProgressBars(){
checkDeath();
if (bHealthsBar.getLayoutParams().width < 30) bHealthsBar.getLayoutParams().width = 0;
else bHealthsBar.getLayoutParams().width = (int) (PB_EN_HP_WIDTH * bEnemy.getHealth(false)/bEnemy.getHealth(true));
}
Runnable的电话如下:
bHandlerTimers = new Handler();
bHandlerTimers.post(bREnemyRegeneration);
事实证明,方法_refreshProgressBar()_总是工作,但**健康栏宽度只改变一次**,如何使它始终改变? – Dionis