私は、UIがスコア(CPUScoreとPlayerScore)のテキストビューで構成されているボードゲームをAndroidで作成しています。私が持っている問題は、onCreateが呼び出されたときにUIが初期値からスコアを更新しないということです。私は同様の質問を見てきました。ほとんどの場合、AsyncTaskを使用してUIスレッドをバックグラウンドで更新する方法があります。しかし、AsyncTaskでtextViewsを使用する方法を明示的に扱うソリューションは見つかりませんでした。Refresh Game Score 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
}
質問: はどのように私はAsyncTaskメソッドへのonCreateメソッド内で宣言textViewsを転送するのですか?私は困惑している。私はAndroid開発にかなり新しいです。
'playerScoreForm'などをクラスメンバー/コンストラクタやカスタムAsyncTaskのパラメータに渡します。 – zapl
どうすればいいか教えてください。 – Buzz