У меня возникли проблемы при попытке передать String и объект классу AsyncTask. Так что, когда моя кнопка на мыши, она должна пройти в строку и объект EventReview в класс AsyncTask:Передача нескольких значений классу AsyncTask
viewDtlEventBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
new GetEventDetailAsyncTask(new GetEventDetailAsyncTask.OnRoutineFinished() {
public void onFinish() {
//Get the values returned from AsyncTask and pass it to another activity
}
}).execute(String.valueOf(eventIDTV.getText()));
}
});
А внутри моего класса AsyncTask, я получаю строку в качестве параметра:
public static class GetEventDetailAsyncTask extends AsyncTask<String, Integer, Double> {
EventController eventCtrl = new EventController();
Context context;
public interface OnRoutineFinished { // interface
void onFinish();
}
private OnRoutineFinished mCallbacks;
public GetEventDetailAsyncTask(OnRoutineFinished callback) {
mCallbacks = callback;
}
public GetEventDetailAsyncTask() {
} // empty constructor to maintain compatibility
public GetEventDetailAsyncTask(Context context){
this.context = context;
}
@Override
protected Double doInBackground(String... params) {
try {
eventCommentModel = eventCtrl.getEventCommentByID(params[0]);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Double result) {
if (mCallbacks != null)
mCallbacks.onFinish(); // call interface on finish
}
protected void onProgressUpdate(Integer... progress) {
}
}
Поэтому я задаюсь вопросом, есть ли способ передать объект String и EventReview в execute(), а затем, когда doInBackground(), каждый из них выполняет каждый метод. Любые гиды?
Заранее благодарен.
Итак, используя это, когда я вызываю AsyncTask, мне все еще нужно вызвать onFinish()? Потому что я должен передать значения, возвращенные к другому действию. –
@IWasSoLost ваш вопрос непонятен. Вы ничего не сказали о возврате любого из этих значений. – Simas
Извини, что я плохой. Я уже обновил этот вопрос. Но с вашим конструктором, как мне заставить строку и объект выполнять другую задачу в doInBackground()? –