2010-05-12 44 views
2

我有这样的代码片段:我如何传递一个上下文对象的线程中调用

public static class ExportDatabaseFileTask extends AsyncTask<String, Void, Boolean> 
{ 
    private final ProgressDialog dialog = new ProgressDialog(ctx); 

    protected void onPreExecute(); 
    protected Boolean doInBackground(final String... args); 
    protected void onPostExecute(final Boolean success); 
} 

正如你看到我用CTX作为上下文变量我执行这个线程作为

new ExportDatabaseFileTask().execute(); 

在新的ProgressDialog调用中,如何将上下文传递给调用方法?

这一个:

new ExportDatabaseFileTask().execute();* 
+0

为什么你会在AsyncTask里面有ProgressDialog? 我总是把它放在我的活动中,并使用publishProgress – Macarse 2010-05-12 11:43:10

回答

5

我找到了办法,我只好创建自己的构造函数,而失去静态的东西

 public ExportDatabaseFileTask(Context ctx) { 
      super(); 
      this.ctx=ctx; 
      dialog= new ProgressDialog(ctx); 
     } 
+0

进行更新yes yes that also works ....我认为static关键字是必需的,而在静态类中你不能定义构造函数。 – RoflcoptrException 2010-05-12 09:34:15

+0

实际上我需要类名前面的static关键字,否则无法识别它,但是我创建了一个新的实例。 – Pentium10 2010-05-12 09:36:45

+0

ty这让我烦恼了好几个小时。 – 2011-05-13 23:34:34

1

只要定义一个静态setter方法,您可以通过上下文对象

0

我刚在开发指南中偶然发现了这一点,我相信这正是它的目的。 android.content.ContextWrapper

相关问题