我正在使用viewpager并编译API 23.我在我的代码中显示了以下语句的编译错误,但项目确实编译了。
List<Fragment> fragments = getSupportFragmentManager().getFragments();
此外,我在android文档中找不到支持片段管理器和非支持片段管理器的方法。有谁知道这里发生了什么?
答案 0 :(得分:4)
我实际上这样做是为了获得对所有片段的引用:
private List<WeakReference<Fragment>> mFragList = new ArrayList<WeakReference<Fragment>>();
@Override
public void onAttachFragment (Fragment fragment) {
mFragList.add(new WeakReference(fragment));
}
public List<Fragment> getActiveFragments() {
ArrayList<Fragment> ret = new ArrayList<Fragment>();
for(WeakReference<Fragment> ref : mFragList) {
Fragment f = ref.get();
if(f != null) {
if(f.isVisible()) {
ret.add(f);
}
}
}
return ret;
}
public Fragment findFragement(String tClass) {
List<Fragment> fragments = getActiveFragments();
for (Fragment fragment : fragments) {
if (tClass.equalsIgnoreCase("Home")) {
if (fragment instanceof ToggleFragment) {
return fragment;
}
} else if (tClass.equalsIgnoreCase("Contacts")) {
if (fragment instanceof ContactFragment) {
return fragment;
}
}
}
return null;
}