2011-08-14 7 views
2

私は2つのAsyncTaskを使用していますが、1つはFragmentActivityでダイアログが返され、呼び出された.executeの後にコードがあります。他の.executeはちょうどif...elseで呼び出されます。別のダイアログが返された後に呼び出されたもの、実行されたもの、実行されたもの、実行後のアクティビティが前のアクティビティにポップバックされ、すべてが機能します。AsyncTask onPostExecuteは前のアクティビティに戻りません

他のonPostExecuteは呼び出されません。私はdoInBackgroundの中でブレークポイントを実行し、ヌルを返しますが、他のものと同じですが、onPostExecuteは起こりません。一つのFragementActivityにあまりにも多くのAsyncTaskを持つか、実行するコールが多すぎますか?私は固執して、何かばかげていることを願っています。私はコードを掲示していますが、なぜonPostExecuteがAddEventWorkerで呼び出されないのかを実際に理解することはできませんが、AddEventFromDialogWorkerにあります。私がアプリケーションをテストする方法では、AddEventFromDialogWorkerが呼び出され、動作し、AddEventWorkerの何かが機能しません(onPostExecuteではなく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

これら2つのクラスを呼び出すコードを投稿できますか? – Jack

答えて

3

あなたonPostExecute()メソッドが呼び出されることはありません。署名はprotected void onPostExecute(voidの結果)にする必要があります。 @Overrideを使用した場合、コンパイラはこの問題について教えてくれたでしょう:)

+0

hehありがとう、私はコピーと貼り付けのコードを取得し、それをダブルチェックしないでください:) – Codejoy

関連する問題