6

データをフェッチProgressDialogしている間にシンプルに表示しようとしています。AsyncTask私のonPreExecute()方法では、これがあります:

pd = ProgressDialog.show(c, "Loading...", "Please wait");

cAsyncTaskmy fromのコンストラクタに渡されるコンテキストthis.getApplicationContext()です。残念ながら、次のメッセージで例外が発生し続けます。

ウィンドウを追加できません -- トークン null はアプリケーション用ではありません

私は何を間違っていますか?

更新:this代わりに使用すると、this.getApplicationContext()別の問題が明らかになりました。を呼び出すProgressDialog.show(...と、ProgressDialog が表示されますが、AsyncTaskが完了するまで表示されません。つまり、データが読み込まれ、ダイアログが表示されます。pd.dismiss()myに含めるとonPostExecute()、ダイアログが表示されることさえありません (ダイアログが開かれる前に閉じられているためと考えられます)。

最終的な解決策:fetch.get() UI スレッドを占有し、ProgressDialog を表示させないことが判明しました。

4

3 に答える 3

4
ProgressDialog dialog;
@Override
    protected void onPreExecute() {
        dialog = new ProgressDialog(viewContacts.this);
        dialog.setMessage(getString(R.string.please_wait_while_loading));
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }
于 2010-06-25T21:32:04.487 に答える
1

これを試して

  this.pd = ProgressDialog.show(this,"Loading...", "Please wait", true, false);

はい、同じ問題があなたの文脈にあると思います。

于 2010-06-25T22:40:11.010 に答える
0

orYourClassName.thisの代わりに使用getApplicationContext()this.getApplicationContext()

于 2015-08-13T16:05:00.907 に答える