我試圖設置一個戰鬥系統,允許用戶選擇近戰攻擊和遠程攻擊(挑選兩個單選按鈕之一)。基於變量按鈕可以說的「超出範圍」,「攻擊近戰」,「攻擊範圍」,「重新加載範圍」。 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正確的文本時。