UI がスコア (CPUScore と PlayerScore) の textView で構成されるボード ゲームを Android で作成しています。私が抱えている問題は、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開発にかなり慣れていません。