我正在 Android 中编写一个棋盘游戏,其中 UI 包含分数的 textViews(CPUScore 和 PlayerScore)。我遇到的问题是,当调用 onCreate 时,UI 不会从其初始值更新分数。我看过类似的问题,最建议的解决方案是使用 AsyncTask 在后台更新 UI 线程。但是,我没有找到明确处理如何在 AsyncTask 中使用 textViews 的解决方案。
这是我的尝试:
@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 方法中声明的 textViews 转移到 AsyncTask 方法中?我难住了。我对Android开发相当陌生。