如果你需要在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 ,这样能够有效避免空指针异常。