我找到了工作解决方案,但我不完全确定。我想看看你的评论。
private List<WeakReference<Fragment>> fragList = new ArrayList<>();
public List<Fragment> getActiveFragments() {
ArrayList<Fragment> ret = new ArrayList<>();
for (WeakReference<Fragment> ref : fragList) {
Fragment f = ref.get();
if (f != null) {
if (f.isVisible()) {
ret.add(f);
}
}
}
return ret;
}
@Override
public void onAttach(Activity act) {
super.onAttach(act);
if (act instanceof BaseActivity) {
parentActivity = (BaseActivity) act;
fragList.add(new WeakReference(getActiveFragments()));
}
}
这里我重构如下:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (getChildFragmentManager().getBackStackEntryCount() > 0) {
for (WeakReference<Fragment> fragmentWeakReference : fragList) {
fragmentWeakReference.get().onActivityResult(requestCode, resultCode, data);
}
}
}