SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como usar a classe databasehelper em uma classe asynctask trabalhando em uma classe diferente


Tente isto:
 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
     }
 }

Você pode chamar isso de AsyncTask pela seguinte linha - supondo que você esteja em uma atividade:
 new FetchData().execute(this);

se você não puder alterar sua desaceleração AsyncTask, tente usar uma variável estática - embora não seja tão eficiente e bonita quanto a desaceleração AsyncTask. Tente isto:
Class myStatic{
private  static Context mContext;


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

static public Context getContext(){
return mContext;
}

}

e em seu código principal, antes de chamar AsyncTask, chame isto:
myStatic.setContext(this);

no seu método doInBackground do seu AsyncTask, adicione isto:
Context myContext = myStatic.getContext();