Как я могу получить объект из моего класса базы данных в AsyncTask? - PullRequest
0 голосов
/ 09 сентября 2018

Мне нужно получить объект класса базы данных в моем классе AsyncTask. Основная проблема в том, что я не могу сослаться на "getApplicationContext();", поэтому я не могу правильно использовать методы из этого класса. Мне нужен мой объект класса базы данных здесь, потому что я хочу заполнить счетчик данными из базы данных. Как мне это сделать? Я не могу продлить AsyncTask для 2 классов. Ниже я приведу код для методов, которые я хочу использовать.

MainActivity

@Override
public Dialog onCreateDialog(int id){
    switch (id){
        case PLEASE_WAIT:
            ProgressDialog dialog = new ProgressDialog(this);
            dialog.setTitle("Looking for database with exercises");
            dialog.setMessage("Please wait ...");
            dialog.setCancelable(true);
    }
    return null;
}

AsyncTaskDB

public class AsyncTaskDB extends  AsyncTask<Void, Void, Void>{
Activity activity;

public AsyncTaskDB(Activity activity){
    this.activity = activity;
}


@Override
protected void onPreExecute() {
    activity.showDialog(MainActivity.PLEASE_WAIT);

}

@Override
protected Void doInBackground(Void... voids) {
    try {
        Thread.sleep(2000);
    }catch (InterruptedException e){
        e.printStackTrace();
    }
    return null;
}

@Override
protected void onPostExecute(Void result) {
    databaseHelper db = new databaseHelper();
    activity.removeDialog(MainActivity.PLEASE_WAIT);

}
}

база

public boolean shouldPopulate(){
    return getCalfData().isEmpty() && getLegsData().isEmpty() && getBackData().isEmpty() && getAbsData().isEmpty() && getBicepsData().isEmpty() && getTricepsData().isEmpty() && getChestData().isEmpty() && getShouldersData().isEmpty();
}

1 Ответ

0 голосов
/ 10 сентября 2018

Я не уверен, что правильно понимаю, в чем именно проблема, поэтому, если это неправильный ответ, уточните свой вопрос и опубликуйте свой код DataBase.class и Activity.class, где вы вызываете AsyncTaskDB.

Почему ты не можешь сделать в AsyncTask так?

DataBase database = new DataBase();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...