完成在我的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