Fragment里面getActivity()为空的建议

如果你需要在Fragment中用到宿主Activity对象,建议在你的基类Fragment定义一个Activity的全局变量,在onAttach中初始化。在onCreateView() 内通过getActivity()来获取宿主Activity对象是是很危险的,经常会报空指针异常。

public Activity mActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    this.mActivity = activity;
}

不过新的SDK版本里面,这个方法已经表示过时了,推荐使用另一个:

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

然后在要用到Context或者Activity对象的地方使用mActivity ,这样能够有效避免空指针异常。


版权声明:本文为haoyuegongzi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。