建网站龙,渭南几个区,私域流量运营平台有哪些,做网站卖广告位赚钱背景 现在Android开发多使用一个Activity管理多个Fragment进行开发#xff0c;不免需要两者相互传递数据#xff0c;一般是给Fragment添加回调接口#xff0c;让Activity继承并实现。 回调接口一般都写在Fragment的onAttach()方法中#xff0c;Fragment 3.0 的onAttach()方… 背景 现在Android开发多使用一个Activity管理多个Fragment进行开发不免需要两者相互传递数据一般是给Fragment添加回调接口让Activity继承并实现。 回调接口一般都写在Fragment的onAttach()方法中Fragment 3.0 的onAttach()方法有2个重载其中一个被废弃所以通常是 XX_Fragment extends Fragment(Fragment 3.0) Overridepublic void onAttach(Context context) {if (context instanceof OnCoverChangeListener) {mListener (ABC_Listener) context;} else {throw new RuntimeException(context.toString() must implement ABC_Listener);}super.onAttach(context);} 但是在一些特定的Android版本下这个onAttach(Context context)并未被调用而是调用了废弃的onAttach(Activity activity)方法。 解决方案 如果使用了Fragment 3.0并且用到了自定义回调那么为了兼容需要 Overridepublic void onAttach(Context context) {if (context instanceof OnCoverChangeListener) {mListener (ABC_Listener) context;} else {throw new RuntimeException(context.toString() must implement ABC_Listener);}super.onAttach(context);}//SDK API23时onAttach(Context)不执行需要使用onAttach(Activity)。Fragment自身的Bugv4的没有此问题Overridepublic void onAttach(Activity activity) {super.onAttach(activity);if (Build.VERSION.SDK_INT Build.VERSION_CODES.M) {if (activity instanceof OnCoverChangeListener) {mListener (ABC_Listener) activity;} else {throw new RuntimeException(activity.toString() must implement ABC_Listener);}}} 总结 建议使用FragmentV4版的减少不必要的系统自身Bug的处理。 还有一篇关于FragmentV4、Fragment3.0的onBackPressed();的Bug详解 传送门Android项目开发填坑记-Fragmen的onBackPressed PS: 你可以关注的我Github、CSDN和微博 转载于:https://www.cnblogs.com/wuyida/p/6300471.html