Java 如何在处理不同类的asynctask类中使用databasehelper类
大家好,我遇到了一个问题,问题是我有三个类,如下所示,我想在AsyncTask类中实例化我的DatabaseHelper类。您能帮我一下吗?我如何在AsyncTask类中获取上下文 问题已解决Java 如何在处理不同类的asynctask类中使用databasehelper类,java,android,database,android-asynctask,android-sqlite,Java,Android,Database,Android Asynctask,Android Sqlite,大家好,我遇到了一个问题,问题是我有三个类,如下所示,我想在AsyncTask类中实例化我的DatabaseHelper类。您能帮我一下吗?我如何在AsyncTask类中获取上下文 问题已解决 主要活动类 public class MainActivity extends Activity { ... FetchData fetchData = new FetchData(); fetchData.execute(); ... } 数据库助手 public class DatabaseHel
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!!!
....
}
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
}
}
Class myStatic{
private static Context mContext;
static public void setContext(Context c);
mContext = c;
}
static public Context getContext(){
return mContext;
}
}
如果您不能更改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();
感谢您的快速重播Kasra,但这对我不起作用,因为我的asynctask类声明是
asynctask
。你还有别的建议吗?
Context myContext = myStatic.getContext();