使用getActivity()作为Context或Activity

时间:2014-05-10 11:50:29

标签: android android-context

我对getActivity()的使用有疑问。

如果我有这两种不同的用途:

我只是使用getActivity()来提供Context

Toast.makeText(getActivity(), "test", Toast.LENGTH_SHORT);

在这里我用它来获取资产:

getActivity().getAssets();

我的问题是,如果Activity尚未添加到Fragment,这两行之间是否存在差异?

如果getActivity()仅用作Context,是否可以获得空指针?

我希望我的问题很明确......

更新:对于那些投票的人,至少请解释原因......

谢谢

1 个答案:

答案 0 :(得分:0)

最后,我为我的Fragments提出了这个解决方案,自那以后我没有收到任何错误:

我会在方法Fragment中尽快获得onAttach()的上下文:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    mContext = activity;
}

多亏了这一点,我可以在班级的任何地方使用Activity的上下文。

对于需要从Activity本身获取元素的情况,我将在方法onActivityCreated()中执行此操作,以保证Activity将完全初始化。

例如:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    //Get the device screen size
    Display display = getActivity().getWindowManager().getDefaultDisplay();
    (...)
}