Android文档教我们在onCreateView中膨胀我们的xml布局,然后返回膨胀的视图。但其他地方的通货膨胀又如何呢?
我想在onCreateView之前膨胀我的视图,存储在一个文件中,然后返回它,已经膨胀了。我不能用通常的方法做这件事。为此,我必须创建一个Inflater,它似乎工作:
class MyFragment : Fragment()
{
private var _view: View? = null
private fun inflateView() {
_view = LayoutInflater.from(requireContext()).inflate(R.layout.my_layout, null, false)
}
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return _view
}
}
但是文档说我必须直接在onCreateView()中膨胀。为什么?这种方法有什么缺点吗?什么是正确的方式来满足我的要求?
2条答案
按热度按时间qf9go6mv1#
你可以看看AsyncLayoutInflater。
这将允许实际的视图膨胀发生在后台线程上,并在膨胀完成时提供OnInflateFinishedListener回调。
对于可以膨胀的内容有一些限制,所以一定要仔细阅读文档。
zpjtge222#
从
onCreateView
返回null意味着您正在创建一个“无头片段”(没有任何UI)。这会影响其行为和生命周期(没有调用
onViewCreated
和onDestroyView
,viewLifecycleOwner
保持为空)。如果您打算延迟创建视图层次结构,那么您至少必须返回一个准系统
FrameLayout
,稍后将填充它(或者只是创建一个“加载”布局并替换它)。