Ich verstehe nicht, warum ich diesen Fehler erhalte. Ich verwende AsyncTask, um einige Prozesse im Hintergrund auszuführen.
Ich habe:
protected void onPreExecute()
{
connectionProgressDialog = new ProgressDialog(SetPreference.this);
connectionProgressDialog.setCancelable(true);
connectionProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
connectionProgressDialog.setMessage("Connecting to site...");
connectionProgressDialog.show();
downloadSpinnerProgressDialog = new ProgressDialog(SetPreference.this);
downloadSpinnerProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
downloadSpinnerProgressDialog.setMessage("Downloading wallpaper...");
}
Wenn ich in doInBackground()
Abhängigkeit von einer Bedingung gerate, die ich:
[...]
connectionProgressDialog.dismiss();
downloadSpinnerProgressDialog.show();
[...]
Immer wenn ich es versuche, downloadSpinnerProgressDialog.show()
erhalte ich den Fehler.
Irgendwelche Ideen Jungs?
Ich hatte ein ähnliches Problem, aber als ich diese Frage las, dachte ich, ich könnte auf einem UI-Thread laufen:
YourActivity.this.runOnUiThread(new Runnable() { public void run() { alertDialog.show(); } });
Scheint den Trick für mich zu tun.
quelle
Es fiel mir auch schwer, diese Arbeit zu machen. Die Lösung für mich bestand darin, sowohl hyui als auch konstantin Antworten zu verwenden.
class ExampleTask extends AsyncTask<String, String, String> { // Your onPreExecute method. @Override protected String doInBackground(String... params) { // Your code. if (condition_is_true) { this.publishProgress("Show the dialog"); } return "Result"; } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); YourActivity.this.runOnUiThread(new Runnable() { public void run() { alertDialog.show(); } }); } }
quelle
onProgressUpdate()
wurden, würden automatisch auf dem UI-Thread ausgeführtfinal Handler handler = new Handler() { @Override public void handleMessage(final Message msgs) { //write your code hear which give error } } new Thread(new Runnable() { @Override public void run() { handler.sendEmptyMessage(1); //this will call handleMessage function and hendal all error } }).start();
quelle