AsyncTask没有接收调用活动上下文

时间:2013-05-24 14:38:41

标签: android android-asynctask android-context

我收到错误消息“android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序。

是的,我知道这个错误遍及stackoverflow并且它基于没有获取活动的上下文...但是,我正在拉动该上下文并仍然收到错误。

来自MainActivity:

  

new MemberStream(this).execute();

来自MemberStream: >

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;
}

当我运行应用程序时,我在

上得到了前面的错误
  

dialog = new ProgressDialog(a.getApplicationContext());

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

public Activity activity;
ProgressDialog dialog;

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

您已有上下文对象(您的活动)

答案 1 :(得分:1)

 dialog = new ProgressDialog(a); 

您已经将一个活动上下文传递给asynctask构造函数。

知道何时使用活动上下文以及何时使用应用程序上下文检查下面的链接并通过commonsware回答

When to call activity context OR application context?

答案 2 :(得分:0)

您可以使用此

public Context context ;
ProgressDialog dialog;

public MemberStream(Context c) {
    context = c;
    dialog = new ProgressDialog(c);
}