2016-07-05 11 views
2

フラグメントが既にスタックに入っているかどうかを確認するために、比較的新しいAndroidです.FragmentManagerからフラグメントのリストを取得して、後でリストを反復し、そこにフラグメントがあるかどうかを確認します。問題は、NPEを取得した後でも、以下のコードの断片の名前をチェックするときにNPEを取得することです。任意のアイデア....助けてください。FragmentManager.getFragmens()。size()は一貫性のないサイズを返します。

if (null != frags) { 
     for (int i = 0; i <frags.size(); i++) { 
      if (frags.get(i).getClass().getName() == backStateName) {// NPE at getclass while juggling fragments in and out of the stack 
       Fragment frag = frags.get(i); 

       FragmentTransaction ft = manager.beginTransaction(); 
       ft.replace(R.id.event_frame, frag); 
       ft.commit(); 

       return; 
      } 
     } 
    } 

答えて

5

ArrayListには、nullエントリを含めることができます。

サポートライブラリのFragmentManager実装では、フラグメントはアクティブフラグメントのリストから削除されません。代わりに、their position in the ArrayList is simply set to null

getFragments()によって返されたアクティブなフラグメントのリストを反復処理する場合、少なくとも1つがnullである可能性があるため、ヌルチェックを行う必要があります。

関連する問題