で終了するのを待って、私は確認ダイアログを表示するために、これを呼び出しています:)doInBackground(上記の関数を呼び出した後アンドロイド:UIは私のAsyncTaskのdoInBackground機能では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();
}
});
}
を私は新しい活動を開始します。問題は、非同期なので、上記の関数が完了するのを待たないということです。私はちょうどポップアップを見ることができ、それは閉じる。これを解決するには?
CreateOKDialog("Trip cancelled");
startActivity(new Intent(trip.this, login.class));
編集:ちょうどポップアップし、消え、私はOKを押しすることは、まだ待たない
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));
}
}
:私はこの関数を呼び出しています
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();
}
。
なぜバックグラウンドスレッドでダイアログを作成していますか? – tyczj
実際に私はAsyncTaskでいくつかの石鹸作業を行い、作業が完了した後、ダイアログを表示して新しいアクティビティを開始する必要があります。そのダイアログがdoInBackgroundに表示されているときにエラーが表示されます –
作業が完了したらダイアログを表示する必要がある場合は、メインスレッドにあるonPostExecuteを使用する必要がありますので、あなたの待ち時間を解決します – tyczj