我如何从一个活动中知道所有它的片段都在onCreateView上调用了

时间:2014-03-23 00:45:58

标签: android android-fragments android-activity android-fragmentactivity

我正在所有片段中显示的Activity中加载数据。 Activity通过Fragments实现的“更新”方法向他们发送数据,以便他们可以填充视图。

我可以在哪里安全地从活动中调用“更新”? (在所有片段完成“onCreateView”之后)

1 个答案:

答案 0 :(得分:3)

你的设计是倒退的。您应该以创建后的方式创建Fragments,然后他们可以调用Activity上的方法来更新View内容。根据{{​​3}},在onCreateView之后调用onAttach,这意味着您可以通过Activity方法访问getActivity()。此外,根据文档,您应该让Activity实现一个接口,以响应从Fragment调用的方法。例如,创建interface OnFragmentCreatedListener

public interface OnFragmentCreatedListener {
    public void onFragmentCreated(Fragment fragment);
}

然后,在Activity中实施此方法,并添加以下方法:

public void onFragmentCreated(Fragment fragment) {
    //TODO handle view creation
}

最后,在您的每个Fragment s'onCreateView方法中,添加以下内容:

try {
    ((OnFragmentCreatedListener) getActivity()).onFragmentCreated(this);
} catch (ClassCastException e) {
    Log.e(TAG, "Activity must inherit from interface OnFragmentCreatedListener", e);
}