传统构造函数与替代构造函数膨胀布局的区别



我正在用Kotlin学习Android开发。我有一个关于填充布局的问题。

我可以用两种方法。传统方式:

class MainFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val view: View = inflater.inflate(R.layout.fragment_main, container, false);
return view;
}

替代方法:

class MainFragment : Fragment(R.layout.fragment_main) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}

我的问题是:用法有什么不同吗?我的意思是,是否存在我必须使用其中一个而不是另一个的情况,或者它们的操作相同,只是以不同的方式书写?如果有区别的话,哪一种,什么时候我要选择传统的通货膨胀方法,什么时候选择另类的通货膨胀方法?也许如果有任何文章或东西,如果有人能给我一个链接,我会很感激的。

我想说,在onCreateView内部(注意不同的覆盖)是您通常会做以下操作的地方:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.foo, container, false)
}

因为这是我们创建视图的地方,所以保持它这样是有意义的,对吗?

现在,在onViewCreated内:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
...
}

首先,它是onCreateView而不是onViewCreated,并且没有区别,因为您可以查看片段onCreateView的代码,如果在构造函数中提供了layout_id,onCreateinflate并为您返回它

@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (mContentLayoutId != 0) {
return inflater.inflate(mContentLayoutId, container, false);
}
return null;
}

最新更新