Fragment的getContext与传递给Fragment的onCreateView的容器的getContext有区别吗?

q12*_*26y 5 android android-context android-fragments android-view android-activity

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
Run Code Online (Sandbox Code Playgroud)

如果我们打电话说

fragment.getContext()并且container.getContext将我们得到相同的结果,则主机活动?

view.getContext()总是返回Activity context或者它可以返回其他类型的context

Din*_*ary 2

Android 中的 Activity 类扩展了 Context 类。所以基本上一个活动就是一个上下文。但上下文可能不是活动。

fragment.getContext()将返回它所附加到的容器的上下文。因此,是的,将具有与主机活动container.getContext()相同的结果。fragment.getContext()

创建 ViewGroup 的实例时,inflater 会将该活动的上下文传递给它。方法container.getContext()将返回相同的上下文。

fragment.getActivity()将返回一个它所附加的活动,该活动又是一个上下文。当片段与活动分离时,它返回 null。当附加时它也返回相同的getContext()

关于你的最后一个问题,view.getContext()返回它运行的上下文。View 不扩展 Context 类,事实上,在创建它们时,它们需要上下文对象作为参数。因此,当您在活动中创建视图时,您需要传递上下文。当您调用 时view.getContext(),您将获得与创建它时传递的相同上下文。