我启动了一个TabLayout Activity,其中包含以下代码来创建片段:
static getDerivedStateFromProps(props, state) {
if(state.prevMembers !== props.members) {
return { members: nextProps.members, prevMembers: props.members };
}
return { prevMembers: props.members };
}
我已阅读官方文档,但仍不确定其工作原理。如果有人能够详细解释这里的每个部分是如何运作的那么好。
编辑:主要是指@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_find, container, false);
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
return rootView;
}
这3个参数中的每一个正在做什么以及inflater.inflate()如何在这里工作。
答案 0 :(得分:0)
<强> onCreateView():强>
调用onCreate()后(在Fragment中),调用Fragment的onCreateView()。您可以分配View变量并执行任何图形初始化。您应该从此方法返回一个View,这是主UI视图,但如果您的Fragment不使用任何布局或图形,则可以返回null(默认情况下,如果您不覆盖)。
答案 1 :(得分:0)
好的,我们走了。
inflating
的过程只是显式创建视图而不是隐式地创建视图,这是通过使用它:
public void onCreate(){
setContentView(R.layout.your_layout);
}
与this问题进行比较。
现在有了参数。将其与this section进行比较。
R.layout.fragment_find
返回代码中某处使用的片段的ID。 R
是一个动态的Android类,用于处理您的某些应用资源,例如视图,字符串等。Compare。container
是某些ViewGroup的根。因此,您可以使用一组按钮来执行常见操作(例如,在应用程序中选择一些颜色),并且它们都具有相同的parent
,在您的情况下称为容器。attachToRoot
是最后一个参数。根据文件:
如果为false,则root仅用于为XML中的根视图创建LayoutParams的正确子类。
所以它与我们在最后一点谈到的父母没有联系。 Compare here
我希望这会有所帮助。