gpt4 book ai didi

android - requireActivity 和 onActivityCreated 有什么区别

转载 作者:行者123 更新时间:2023-12-03 13:27:11 25 4
gpt4 key购买 nike

在我的代码中,我在 onCreateView() 之后加载图片很不方便因为我不确定该 Activity 是否可用。因为 Glide 需要一个 Activity 上下文,所以我把这段代码放到了 onActivityCreated() 中。 :

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

//Crash unexpected since onActivityCreated should always have activity available
Glide.with(activity!!)
.load(viewModel.moment!!.mediaPath)
.into(binding.momentPhoto);
}
然而,在查看了 Github 上的一些最佳实践后,许多示例将照片加载到 onCreateView() 中。 .他们通过使用 requireActivity() 来做到这一点。方法:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(layoutInflater, R.layout.fragment_photo_editor, container, false)

Glide.with(requireActivity())
.load(viewModel.moment!!.mediaPath)
.into(binding.momentPhoto);

return binding.root
}
有谁知道在 onActivityCreated() 之后使用 Activity 引用有什么区别?并从 requireActivity() 获取 Activity 引用?

最佳答案

我们应该把这个答案分成两部分。

1.activity!!的区别和 requireActivity()

他们都调用 getActivity()如果Activity,它们都会抛出异常。一片空白。唯一的区别是返回异常的类型及其消息。当然,requireActivity()引发更明确的异常。

2.onActivityCreated()之间的“区别”和 onCreateView()

方法onActivityCreated()被调用 之后 onCreateView()当两个 ActivityFragment查看是 已经创建的。

方法onCreateView()被调用 之前 onActivityCreated()Fragment View 应该是 还是 创建的。

在您的场景中,您放置 Glide 的位置没有区别。用法。如果您的 Fragment 会有所不同保留其实例或在 ImageView 的情况下在 Activity 内.

顺便说一句,我会移动你的Glide onViewCreated() 中的用法自从 onActivityCreated()很快就会被弃用(https://developer.android.com/jetpack/androidx/releases/fragment#1.3.0-alpha02)。

关于android - requireActivity 和 onActivityCreated 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61045573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com