2011-07-02 3 views
1

私は2スピナー、AsyncTask複数のAsyncTaskを実行するには?

を使用してデータベースからロード 各スピナーのデータを持っている私は一つだけスピナー

のための1つのAsyncTaskを呼び出す場合、それは動作します。この

を使用してAsyncTasksを呼び出すしかし!

私は2つのスピナーを持っているので、私は、私はそれと私のアプリを強制終了

ソリューションを実行

new PopulateSpinnerA().execute(); // for Spinner A 
new PopulateSpinnerB().execute(); // for Spinner B 

この

のように各スピナーのためのAsyncTaskを呼び出しますか?

UPDATE!

は私がブール変数

を作る私の2つのスピナーは、最初

を生成するためにブール値(trueとfalseで遊ん)を使用して

イムtrueとfalseと答える人以下の人からインスピレーションを得ます

Boolean SPN = false; 

その後、私はブール値をチェックしてのonCreate()関数に

private void cek(){ 
     if(!SPN){ 
      new populateSpinnerA().execute(); 
     } 
     if(SPN){ 
      new populateSpinnerB().execute(); 
     } 
    } 
をそれを置くために関数を作りますpopulateSpinnerA上

()私はちょうど二スピナーのAsyncTask

SPN = true; 
cek(); 

BOOMを実行するには、この2行を入れて!

完了:D

+0

スタックトレースしてください。 –

+0

それは何ですか? 私は知らない – Falmesino

+0

Logcatに入っているというエラーメッセージを表示します。 – Lavanya

答えて

1

一度に2つのスピナーを使用することはできません。この場合、任意のトリックを使用する必要があります。

  1. スピナーを1つだけ使用してください。
  2. 最初のスピナーを開始しながらスピナーを開始します。
  3. PostExecuteに共通フラグを1つ設定します。
  4. ステップ#3の前に、両方のAsyncTaskチェックのpostExecuteにフラグがすでに設定されているかどうかチェックします。

以下の擬似コードを参照してください。

postExecute(){ 
     If(taskCompletedFlag == true){ 
      //Code to cancel the spinner. 
      taskCompletedFlag = false; 
     }else{ 
      taskCompledtedFlag = true; 
     } 
} 

P.S. - AsyncTaskが最初に起動することに気づいていない場合、その上で同じメカニズムを使用できます。

+0

私はこの回答からインスピレーションを得ています:D – Falmesino

関連する問題