在我的父片段的onCreateView方法中,我调用子片段管理器将片段插入到布局中。这个子片段包含一些FloatingActionButtons。
在我提交事务之后,然后检查我的基础列表的内容(为RecyclerView提供电源),并根据是否存在任何值,我隐藏/取消隐藏某些FloatingActionButtons。
然而,它告诉我按钮是空的!提交Fragment事务是否先调用所有典型的生命周期事件?有没有办法迫使它等待?有更好的做法吗?
答案 0 :(得分:0)
提交不是同步的。无法保证片段的生命周期何时执行。
如果您需要知道片段何时“准备就绪”,请实施从片段到托管活动的回调,让它知道。
class CustomB extends CustomA {
interface Listener {
void onViewCreated();
}
public View onCreateView() {
View v = super.onCreateView();
if (getActivity() instanceof Listener) {
((Listener)getActivity()).onViewCreated();
}
return v;
}
}
一般来说,您应该尝试将片段设计为自包含。如果片段与活动紧密绑定,请考虑将功能实现为自定义View
。