2016-04-29 14 views
0

私はAsyncTaskをいくつか取り込み、受け取ったデータに基づいていくつかのフラグメントを作成しました。場合には何もデータが返されない、私が実行します。コードの一部が「nullオブジェクト参照で 『int型android.support.v4.app.Fragment.mNextAnim』フィールドにデータを書き込もうとした」原因すべてのフラグメントを削除するとエラーが発生します

if (data.size() == 0) { 
    List<Fragment> fragments = getChildFragmentManager().getFragments(); 
    if (fragments != null) { 
     FragmentTransaction txn = getChildFragmentManager().beginTransaction(); 
     for (Fragment fragment : fragments) txn.remove(fragment); 
     txn.commit(); 
    } 
} 

。どんな考え?

私は多分、トランザクションを構築する時に、いくつかの古いトランザクションは非同期に保留されていること、考えたので、私は、トランザクションを構築する前に

getChildFragmentManager().executePendingTransactions() 

コールを追加しました。それでも、エラーはそこにあります。

+0

ここで、メソッド** getFragments()**が見つかりますか? – Alexander

+0

申し訳ありませんが、子供のフラグメントマネージャー、ちょうど質問を編集しました – mpiekarz

+0

このコード部分はどのような方法ですか? –

答えて

1

通常、このエラーはトランザクションからnullフラグメント参照を削除しようとしたときに発生します。だからこれを試してください。

if (data.size() == 0) { 
      List<Fragment> fragments = getChildFragmentManager().getFragments(); 
      if (fragments != null) { 
       FragmentTransaction txn = getChildFragmentManager().beginTransaction(); 
       for (Fragment fragment : fragments) { 
        if (fragment != null){ 
         txn.remove(fragment); 
        } 
       } 
       txn.commit(); 
      } 
     } 
+0

が動作します。好奇心が強い - なぜ、getFragments()がnullを持つリストを返すのですか? – mpiekarz

+0

私は非アクティブな断片のために、彼らはnull参照を保持すると思います。 – Krish

関連する問題