0

「android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application.

はい、私はこのエラーがスタックオーバーフロー全体にあり、アクティビティのコンテキストを取得していないことに基づいていることを知っています...ただし、そのコンテキストを取得してもエラーが発生します。

MainActivity から:

new MemberStream(this).execute();

メンバーストリームから: >

public HomeActivity activity;
ProgressDialog dialog;

public MemberStream(HomeActivity a) {
    this.activity = a;
    dialog = new ProgressDialog(a.getApplicationContext());
}
@Override
protected void onPreExecute() {
    this.dialog.setMessage("Loading");
    this.dialog.show();
}
@Override
protected Boolean doInBackground(String... params) {
    updateMembers(url, 0);
    return true;
}

アプリケーションを実行すると、上記のエラーが発生します

ダイアログ = 新しい ProgressDialog(a.getApplicationContext());

何か案は?

4

3 に答える 3

3
public Activity activity;
ProgressDialog dialog;

public MemberStream(Activity a) {
    this.activity = a;
    dialog = new ProgressDialog(a);
}

あなたはすでにコンテキストオブジェクトを持っています (あなたの活動)

于 2013-05-24T14:40:03.097 に答える
1
 dialog = new ProgressDialog(a); 

asynctask コンストラクターに渡されたアクティビティ コンテキストが既にあります。

アクティビティ コンテキストを使用するタイミングとアプリケーション コンテキストを使用するタイミングを知るには、以下のリンクを確認し、コモンズウェアで回答してください

アクティビティ コンテキストまたはアプリケーション コンテキストをいつ呼び出すか?

于 2013-05-24T14:43:33.550 に答える
0

これを使用できます

public Context context ;
ProgressDialog dialog;

public MemberStream(Context c) {
    context = c;
    dialog = new ProgressDialog(c);
}
于 2013-05-24T14:41:53.163 に答える