2011-08-14 2 views
2

У меня есть две AsyncTasks, которые я использую, один вызывается после того, как диалог возвращается в FragmentActivity, и после вызова .execute я вызываю код. Другой .execute называется только в if...else. Тот, который вызван после следующего диалога, возвращается, делает то, что он должен, он выполняет, при выполнении post он возвращает активность в предыдущую, и все работает.AsyncTask onPostExecute не возвращается к предыдущему действию

Другой onPostExecute никогда не называется. Я сделал точку останова в doInBackground, которая выполняет и возвращает нуль, как и другой, но onPostExecute никогда не происходит, есть ли проблема с слишком большим количеством AsyncTasks в одной FragementActivity или слишком много вызовов для выполнения? Я застрял и надеюсь, что это что-то глупое, я просто не вижу, поэтому я отправляю код, но я действительно не могу понять, почему onPostExecute никогда не вызывается в AddEventWorker, но делает это в AddEventFromDialogWorker. То, как я тестирую приложение, которое это делает, происходит, когда AddEventFromDialogWorker вызывается, работает, а затем ничего в AddEventWorker не работает (делает doInBackground, но не onPostExecute).

Любые идеи или проспекты для меня, чтобы попробовать? Метод

private class AddEventWorker extends AsyncTask<Void, Void, Void>{ 
      protected void onPostExecute() { 
       getFragmentManager().popBackStack(); 
       } 
      @Override 
      protected Void doInBackground(Void... params) { 
       mGoogleApi.addEvent(mSession, allGoogleAccounts.get(0).getGoogleCalendarName()); 
       return null; 


      }   
     } 

     private class AddEventFromDialogWorker extends AsyncTask<String, Void, Void>{ 
      protected void onPostExecute() { 
       Toast.makeText(mContext, "Event added to google calendar!", Toast.LENGTH_SHORT); 
       getFragmentManager().popBackStack(); 
       } 
      @Override 
      protected Void doInBackground(String... params) { 
       mGoogleApi.addEvent(mSession, params[0]); 
       return null; 
      }   
     } 
+0

Можете ли вы опубликовать код, который называет эти два класса? – Jack

ответ

3

Ваш onPostExecute() никогда не вызывается, потому что вы не перекрывая базового класса метод onPostExecute(). Подпись должна быть защищена void onPostExecute (результат Void). Если вы использовали @Override, компилятор расскажет вам об этой проблеме :)

+0

heh thanks, его то, что я получаю для копирования и вставки кода, а не двойной проверки его :) – Codejoy