问题:onAttach 没有回调,导致使用 context 时出现空指针异常
原因:onAttach 有两个重载 onAttach(Activity) 和 onAttach(Context),其中后者是在 API 23 中增加的,这次出现问题正是因为在 API 22 的机器上重写的是 onAttach(Context)。
解决方法:如果使用的是 Support 库的 Fragment 应该是不会有问题的,除此之外,也可以将 onAttach 改为
/*
* onAttach(Context) is not called on pre API 23 versions of Android and onAttach(Activity) is deprecated
* Use onAttachToContext instead
*/
@TargetApi(23)
@Override
public final void onAttach(Context context) {
super.onAttach(context);
onAttachToContext(context);
}
/*
* Deprecated on API 23
* Use onAttachToContext instead
*/
@SuppressWarnings("deprecation")
@Override
public final void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
onAttachToContext(activity);
}
}
/*
* Called when the fragment attaches to the context
*/
protected void onAttachToContext(Context context) {
}
问题:onAttach 没有回调,导致使用 context 时出现空指针异常 原因:onAttach 有两个重载 onAttach(Activity) 和 onAttach(Context),其中后者是在 API 23 中增加的,这次出现问题正是因为在 API 22 的机器上重写的是 onAttach(Context)。 解决方法:如果使用的是 Support 库的 Fragment 应该是不会有问题的,除此之外,也可以将 onAttach 改为
参考:
Android - onAttach(Context) not called for API 23