我试图设置一个战斗系统,允许用户选择近战攻击和远程攻击(挑选两个单选按钮之一)。基于变量按钮可以说的“超出范围”,“攻击近战”,“攻击范围”,“重新加载范围”。 onresume radioButtons有正确的文字。第一次射击远程武器(与远程武器已经重新加载的战斗开始)rangeRadio的文本更改为“重新加载范围”,但不会从“重新加载范围”更改为“攻击范围”,即使武器“重新加载”时也是如此当我结束转弯时(和瓶坯设定动作)将会造成交易伤害。如果武器需要2回合重新加载。我花了2轮重新加载,单击主页按钮,然后返回到活动它会正确设置文本,并说“范围攻击”,其他明智它将保持“重新加载范围”。 (rangeId == 50表示没有武器),然后检查武器是否被加载(int rangeReload = 100),然后最后检查是否存在射程/射程。如果陈述只完全运行onresume()
private void setActions(){
RadioButton meleeRadio = (RadioButton) findViewById(R.id.meleeRadio);
RadioButton rangeRadio = (RadioButton) findViewById(R.id.rangeRadio);
if (meleeRange >= distance){meleeRadio.setText(meleeString);}else{meleeRadio.setText(oorString);}
if (rangeId == 50){rangeRadio.setText(norangeString);}else{if(rangeReload<=99){rangeRadio.setText(reloadString);}else{
if (rangeRange >= distance){rangeRadio.setText(rangeString); Log.e(rangeString, "Range Attack called");}else{rangeRadio.setText(oorString);}}}
}
我打电话给setActions();在两个地方。在经由战斗前()的onResume - > layoutcombat()
@Override
protected void onResume() {
new pullCombatActions().execute();
new prepCombat().execute();
super.onResume();}
private class prepCombat extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
playerBattlePrep();
findNPC();
return null;}
@Override
protected void onPostExecute(String result) {
new layoutCombat().execute();
}
}
private class layoutCombat extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
startCombat();
pullCombatText();
return null;}
@Override
protected void onPostExecute(String result) {
setActions();
popStats();
refreshStats();
combatStartText();}
}
第二名我请setActions();在我的AsyncTask中,我在战斗结束时运行以刷新屏幕并向用户显示通过滚动发生的事情。
private class replaceScreen extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
pullCombatStory();
return null;
}
@Override
protected void onPostExecute(String result) {
refreshStats();
refreshCombatStory();
highLightPlayerActions();
highLightNpcActions();
setActions();
}
}
我不明白为什么它似乎通过对半途而废我的if语句设置rangeRadio不过的onResume让它完成所有的方式,显示rangeRadio正确的文本时。