Ich bin ein Brettspiel in Android zu schreiben, wo die Benutzeroberfläche von Textviews für die Bewertung (CPUScore und PlayerScore) besteht. Das Problem, das ich habe, ist, dass die Benutzeroberfläche nicht den Punktestand von seinem Anfangswert aktualisiert, wenn onCreate aufgerufen wird. Ich habe ähnliche Fragen untersucht und die am häufigsten vorgeschlagene Lösung ist die Verwendung von AsyncTask, um den UI-Thread im Hintergrund zu aktualisieren. Allerdings habe ich keine Lösung gefunden, die sich explizit mit der Verwendung von textViews in AsyncTask befasst.Refresh Spiel Ergebnis Textview AsyncTask mit
Hier ist mein Versuch:
@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);
}
Die AsyncTask Subklassen:
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
}
Frage: wie übertrage ich die Textviews, die ich in der onCreate Methode zum AsyncTask Methode deklariert? Ich bin ratlos. Ich bin ziemlich neu in der Android-Entwicklung.
make 'playerScoreForm' und so auf die Teilnehmer/geben sie im Konstruktor oder die params Ihrer benutzerdefinierten AsyncTask. – zapl
Könnten Sie mir bitte ein ungefähres Beispiel dafür geben? – Buzz