大家好我被困在一个点上,问题是我有下面显示的三个类,我想在 AsyncTask 类中实例化我的 DatabaseHelper 类。你能帮忙吗,我怎样才能在 AsyncTask 类中获取上下文?
问题已解决
MainActivity 类
public class MainActivity extends Activity { ... FetchData fetchData = new FetchData(); fetchData.execute(); ... }
数据库助手
public class DatabaseHelper extends SQLiteOpenHelper { .... public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); .... }
获取数据类
public class FetchData extends AsyncTask<String, String, String> { .... DatabaseHelper db = new DatabaseHelper(); //need context here!!! .... }
感谢 Kasra,我创建了一个 fourh 类并在调用 AsyncTask 之前在 MainActivity 中使用它
上下文静态类
public class ContextStatic { private static Context mContext; public static Context getmContext() { return mContext; } public static void setmContext(Context mContext) { ContextStatic.mContext = mContext; } }
更新了 MainActivity 类
public class MainActivity extends Activity {
...
ContextStatic.setmContext(this);
FetchData fetchData = new FetchData();
fetchData.execute();
...
}
最佳答案
试试这个:
private class FetchData extends AsyncTask<Context, Void, Void> {
protected Long doInBackground(Context... c) {
Context myContext = c[0];
// Do your things here....
}
protected void onPostExecute() {
// Insert your post execute code here
}
}
您可以通过以下行调用此 AsyncTask - 假设您正在进行 Activity :
new FetchData().execute(this);
如果您无法更改 AsyncTask 减速,那么您可以尝试使用静态变量 - 虽然它不如 AsyncTask 减速那么高效和美观。试试这个:
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
在你的主代码中,在你调用 AsyncTask 之前,调用这个:
myStatic.setContext(this);
在 AsyncTask 的 doInBackground 方法中,添加:
Context myContext = myStatic.getContext();
关于java - 如何在处理不同类的异步任务类中使用 databasehelper 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28267764/