在fragment中使用Toast是用的非常多的,但是总是频繁的报空指针
Toast.makeText(getActivity(), "click", Toast.LENGTH_SHORT).show();
原因
只是因为getActivity()很容易为null,因为fragment里有一个initstate方法,在activity被替换掉的时候mActivity便赋值给了null ,而这个方法会在replace操作的时候执行,意思就是替换fragment的时候被替换的fragment会执行initstate()方法,会把原先的mActivity重新赋值为null,如果此时涉及到异步操作并需要context的话,便会抛出空指针异常,因为在异步操作完成前fragment已经执行initstate()了,mActivity已经被重新赋值为null了,所以如果此时调用getactivity的话会抛异常。
解决
重写oncreat()方法 ,在里面初始化context.
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mContext = getActivity();
}
Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show();