我正在編寫一個Android遊戲,其中UI由分數(CPUScore和PlayerScore)的textViews組成。我遇到的問題是,在調用onCreate時,UI不會從其初始值更新分數。我看過類似的問題,最常見的解決方案是使用AsyncTask在後臺更新UI線程。然而,我沒有找到明確處理如何在AsyncTask中使用textViews的解決方案。使用AsyncTask刷新遊戲得分TextView
這裏是我的嘗試:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//....
setContentView(R.layout.main_layout);
//.....
//------------ textViews declared here don't refresh -------------------
TextView playerScoreForm = (TextView) findViewById(R.id.PlayerTotalScore);
playerScoreForm.setText(Integer.toString(PlayerTotal));
playerScoreForm.invalidate();
TextView CPUScoreForm = (TextView) findViewById(R.id.CPUTotalScore);
CPUScoreForm.setText(Integer.toString(CPUTotal));
CPUScoreForm.invalidate();
//--------------------------------------------------------------------------
//AsyncTask method:
new updatePlayerScore().execute(PlayerTotal);
new updateCPUScore().execute(CPUScoreForm);
}
的的AsyncTask子類:
private class updatePlayerScore extends AsyncTask<TextView, Void, Void> {
@Override
protected TextView doInBackground(TextView... params) {
// what to put here??
}
return playerScoreForm;
}
@Override
protected void onProgressUpdate(Integer... values) {
//??
}
protected void onPostExecute(Integer result) {
playerScoreForm.setText(Integer.toString(result));
}
}
private class UpdateCPUScore extends AsyncTask<TextView, Integer, Integer> {
// same syntax as updatePlayerScore
}
問題: 我怎麼轉,我在onCreate方法到的AsyncTask方法聲明的textViews?我很難過。我對Android開發相當陌生。
使'playerScoreForm'等類成員/將它們傳遞給構造函數或自定義AsyncTask的參數。 – zapl 2012-04-02 22:53:06
您能否給我一個如何做到這一點的粗略例子? – Buzz 2012-04-02 23:25:04