Zso*_*agy 61 android android-fragments android-3.0-honeycomb
我还没有找到一种简单的方法来获取活动中所有当前活动的(可见的,当前处于恢复状态)碎片.我的活动中是否可以不使用自定义簿记?似乎FragmentManager不支持此功能.
did*_*_X8 109
看起来API目前错过了像"getFragments"这样的方法.
但是,使用Activity类的事件"onAttachFragment",应该很容易做到你想要的.我会做的事情如下:
List<WeakReference<Fragment>> fragList = new ArrayList<WeakReference<Fragment>>();
@Override
public void onAttachFragment (Fragment fragment) {
fragList.add(new WeakReference(fragment));
}
public List<Fragment> getActiveFragments() {
ArrayList<Fragment> ret = new ArrayList<Fragment>();
for(WeakReference<Fragment> ref : fragList) {
Fragment f = ref.get();
if(f != null) {
if(f.isVisible()) {
ret.add(f);
}
}
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
如果没有就绪方法从对象中读取状态(示例中为isActive()),我将覆盖onResume和onPause来设置标志(可能只是一个bool字段).
这已经是一些自己的簿记,但考虑到你想要实现的非常具体的目标(状态依赖列表),我认为仍然非常有限.
Mic*_*ael 14
如果您使用Android支持库,则可以调用隐藏FragmentManager.getFragments()方法:
public List<Fragment> getVisibleFragments() {
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
if (allFragments == null || allFragments.isEmpty()) {
return Collections.emptyList();
}
List<Fragment> visibleFragments = new ArrayList<Fragment>();
for (Fragment fragment : allFragments) {
if (fragment.isVisible()) {
visibleFragments.add(fragment);
}
}
return visibleFragments;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33633 次 |
| 最近记录: |