SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment utiliser la classe databasehelper dans une classe asynctask travaillant sur une classe différente

Essayez ceci :

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

Vous pouvez appeler cette AsyncTask par la ligne suivante - en supposant que vous êtes dans une activité :

 new FetchData().execute(this);

si vous ne pouvez pas modifier votre décélération AsyncTask, vous pouvez essayer d'utiliser une variable statique - bien qu'elle ne soit pas aussi efficace et jolie que la décélération AsyncTask. Essayez ceci :

Class myStatic{
private  static Context mContext;


static public void setContext(Context c);
mContext = c;
}

static public Context getContext(){
return mContext;
}

}

et dans votre code principal, avant d'appeler AsyncTask, appelez ceci :

myStatic.setContext(this);

dans votre méthode doInBackground de votre AsyncTask, ajoutez ceci :

Context myContext = myStatic.getContext();