完成在我的AsyncTask的doInBackground功能,我打電話這顯示一個確認對話框:安卓:等待UI中的AsyncTask
void CreateOKDialog(final String message)
{
runOnUiThread(new Runnable() {
@Override
public void run()
{
AlertDialog.Builder builder = new AlertDialog.Builder(trip.this);
builder.setTitle(message);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
調用doInBackground上述功能()我開始一個新的活動後。問題是,由於它是異步的,它不會等待上述功能的完成。我只能看到一個彈出窗口並關閉。如何解決這個問題?
CreateOKDialog("Trip cancelled");
startActivity(new Intent(trip.this, login.class));
編輯:
void CreateOKDialog(String message)
{
AlertDialog.Builder builder = new AlertDialog.Builder(trip.this);
builder.setTitle(message);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
我調用這個函數:
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if(isError)
CreateOKDialog("Error cancelling trip");
else {
CreateOKDialog("Trip cancelled");
startActivity(new Intent(trip.this, login.class));
}
}
它仍然沒有等我按OK,只是彈出和消失。
你爲什麼要創建一個後臺線程的對話? – tyczj
實際上我需要在AsyncTask中完成一些肥皂工作,然後工作完成後,向用戶顯示對話框並開始新的活動。它顯示了一個錯誤時,顯示在doInBackground –
該對話框中,如果你需要顯示的對話框時,工作是你應該使用onPostExecute這是對故主線程解決您的等待問題做 – tyczj