我正在所有片段中显示的Activity中加载数据。 Activity通过Fragments实现的“更新”方法向他们发送数据,以便他们可以填充视图。
我可以在哪里安全地从活动中调用“更新”? (在所有片段完成“onCreateView”之后)
答案 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);
}