为什么这个片段的字段为空?

时间:2016-05-03 23:33:56

标签: android android-fragments fragmenttransaction fragmentmanager

在我的父片段的onCreateView方法中,我调用子片段管理器将片段插入到布局中。这个子片段包含一些FloatingActionButtons。

在我提交事务之后,然后检查我的基础列表的内容(为RecyclerView提供电源),并根据是否存在任何值,我隐藏/取消隐藏某些FloatingActionButtons。

然而,它告诉我按钮是空的!提交Fragment事务是否先调用所有典型的生命周期事件?有没有办法迫使它等待?有更好的做法吗?

1 个答案:

答案 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