片段中的getContext()

时间:2018-02-08 14:57:29

标签: android android-fragments android-context

我在哪里可以getContext()访问Fragment?我的意思是,它不是null并且可以使用(例如,用于控件创建)。是onAttachonCreateView还是onActivityCreated

4 个答案:

答案 0 :(得分:3)

getContext()onAttach()onDetach()

之间始终不为空

答案 1 :(得分:2)

所有提到的答案基本上都是正确的。您应该在onAttach和onDetach之间获得活动的上下文,所以我喜欢将其添加到片段中:

private Context mContext;

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    mContext = context;
}

@Override
public void onDetach() {
    super.onDetach();
    mContext = null;
}

,然后每当我使用mContext时,我都会添加一张支票:

if(mContext != null) {
   //your code that uses Context

}

答案 2 :(得分:1)

getActivity()onAttach之间使用onDetach来获取附加的Activity Context Fragment

答案 3 :(得分:0)

通过在getContext()内拨打onCreateView(),您可以非常安全。如果你看一下docs {{3}},那么从onAttach开始,你的片段会有一个背景。