時間のかかる操作のためにアンドロイドでスレッドを作成しています。メイン画面に進行中のダイアログが表示され、その操作が進行中であることを知らせるメッセージが表示されますが、スレッドが完了するとそのダイアログを閉じるようにします。私は結合で試してみましたが、スレッドをロックしてダイアログを表示しません。私は使用しようとしました:スレッドが完了するとダイアログを閉じる
dialog.show();
mythread.start();
dialog.dismiss();
しかし、ダイアログが表示されません。どのようにしてそのシーケンスを作ることができますか?メインスレッドをロックせずにスレッドが終了するのを待ちますか?
これは限り私が得たようである:
public class syncDataElcanPos extends AsyncTask<String, Integer, Void> {
ProgressDialog pDialog;
Context cont;
public syncDataElcanPos(Context ctx) {
cont=ctx;
}
protected void onPreExecute() {
pDialog = ProgressDialog.show(cont,cont.getString(R.string.sync), cont.getString(R.string.sync_complete), true);
}
protected Void doInBackground(String... parts) {
// blablabla...
return null;
}
protected void onProgressUpdate(Integer... item) {
pDialog.setProgress(item[0]); // just for possible bar in a future.
}
protected void onPostExecute(Void unused) {
pDialog.dismiss();
}
しかし、私はそれを実行しようとすると、それは私に例外を与える:「ウィンドウを追加できません」。あなたのスレッドが実行されると、あなたがここに
を解任呼び出すことができます上のpostexecuteでAsyncTaskでよく
ありがとう、あなたの助けを借りて、AsyncTaskオプションを試し、それがどうなるかを見てみましょう... – MarioV
進捗状況ダイアログでコンテキストを追加するにはどうしたらいいですか? MyActivity.thisは私のために働いていない、彼らはそれらのparamsで作成することはできません、それは活動そのものではなく、コンテキストを取っていると言います。 – MarioV
クラスAddTaskをアクティビティのInnerClassとして宣言していますか?もしそうなら、それはうまくいくはずなので、クラスにコンテキストを渡す必要がありますAddTask – Houcine