2017-02-04 14 views
-2

私は2つのフラグメントを持っています: フラグメントAフラグメントBです。ポスト実行時にAsyncTaskを実行します

card1 = (CardView) rootView.findViewById(R.id.cardviewone); 
     card1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      card1.setClickable(false); 
      new myAsyncTask(chkprog) { 
      @Override 
      public void onPostExecute(Void aVoid) { 
      a.setText(R.string.string1); 
      } 
    }.execute(); 
    } 
}); 

がどのようにフラグメントに戻ってポストに実行コールをキャンセルする:以下

がそれぞれのコードです:ユーザーがカードビューをクリックしたときに

フラグメントで非同期タスクが実行されますA、ユーザーがというフラグメントBに切り替わり、アプリがクラッシュするのを防ぐには?

+0

よう

何かが今のアプリがクラッシュしていますか?そして、両方のAsyncTaskのコードを投稿してください。 – OBX

+0

単純な条件をonPostExecuteに追加するには、例:layout = layoutまたはfragment = fragmentを実行してコードを実行します。それ以外は何もしないでください。 – rodoboss

+0

ur urlクラッシュログ – rafsanahmad007

答えて

0

フラグメントがコールバックの前にユーザーに表示されているかどうかをチェックするだけです。この

@Override 
public void onPostExecute (Void aVoid){ 
    if (FragmentA.this.isVisible()) { 
     a.setText(R.string.string1); 
    } 
} 
+0

rootview = inflater.inflate (R.layout.layout1、container、false); card1 =(CardView)rootView.findViewById(R.id.card1);フラグメントの代わりにビューが見えるかどうかを検出することは可能ですか? – rodoboss

+0

ビューが表示されますが、ライフサイクルが異なります。上記の助けをしましたか? { - 静的文脈から {} \t参照することができない静的な方法で(見えない)(Fragmenta.isVisible())<場合 \t ... \t \t} –

+0

パブリッククラスFragmentaフラグメントを拡張します – rodoboss

関連する問題