複雑なバックグラウンド操作(送信するログファイルのコンパイル)を処理するAsyncTaskを使用しており、ProgressDialogを使用してユーザーの進行状況を表示しています。私はshowDialog()を使ってみましたが、それは決して表示されない(それは決して呼び出されません)ように思われ、それを行う方法についてのチュートリアルに続きました... 私は管理されていないものを使用しています。 。私はまた、ログファイルをコンパイルし始めるときにメッセージを更新したいと思っています(それが遅れているか、テキストビューが本当に長くて、想定されているように更新されません)。AsyncTaskのProgressDialogが更新または破棄されない
コードを少し動かして問題が発生したように見える(onProgressUpdate()など)が、動作させる方法がわかりません。私はこのサイトの周りを見て、何も私は(まったくとにかくではない)問題を抱えているようだ。 RunOnUiThread()が動作しない、新しいThread(){}が動作しない、onProgressUpdate()が動作しない(ドキュメントが混乱している)
これも決して解雇されません。私はリスナーを設立したことはありません。
誰かが自分のコードに間違いがあることを知っていますか?私はAsyncTaskがシンプルであると考えていた。
private class BuildLogTask extends AsyncTask<Void, Void, String> {
String temp;
ProgressDialog progressdialog = new ProgressDialog(context); //variable is defined at onCreate (held as private, not static)
@Override
protected String doInBackground(Void... params) {
temp = buildLog();
logdata = temp;
publishProgress();
createLogFile();
return temp;
}
protected void onProgressUpdate() {
progressdialog.setMessage("Compiling Log File...");
}
@Override
protected void onPreExecute() {
Log.w(TAG,"Showing Dialog");
send.setEnabled(false);
ProgressDialog progressdialog = new ProgressDialog(context);
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressdialog.setMessage("Gathering Data...");
progressdialog.setCancelable(false);
progressdialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Log.e(TAG,"Progress Dialog dismissal.");
}
});
progressdialog.show();
}
@Override
protected void onCancelled(){
Log.e(TAG,"Progress Dialog was Cancelled");
progressdialog.dismiss();
logdata=null;
}
@Override
protected void onPostExecute(String result) {
progressdialog.dismiss();
send.setEnabled(true);
previewAndSend();
}
}
うん...それはそれでした。 私は今や気分が悪いです!しかし、ありがとう! – Mgamerz