FragmentManager.getFragmens().size()返回不一致的大小;

Abh*_* Bm 2 java android android-fragments

我是相对较新的Android,为了检查片段是否已经在堆栈中我从FragmentManager获取片段列表,稍后迭代列表并检查那里的片段然后我会相应地加载它.当我在下面的代码片段中检查片段的名称时,问题是得到NPE,即使在进行空检查之后也是如此.任何想法....请帮助.

 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;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Tan*_*.7x 6

一个ArrayList可以包含空条目.

使用支持库的FragmentManager实现,永远不会从活动片段列表中删除片段.相反,它们在ArrayList中的位置只是设置为null.

因此,当您遍历返回的活动片段列表时getFragments(),您应该进行空检查,因为它们中至少有一个是空的.