关于Fragment中的onAttach()方法有时候无法正常加载的问题
在Android Studio里使用Fragment开发兼容平板的应用时遇到了一些小问题。由于开发初衷是兼容手机和平板,使用A和B两个模拟器,一个用于测试手机,一个用于测试平板。在模拟器A运行应用时一点儿问题也没有,模拟器B运行应用却显示异常。
模拟器A运行效果如下:
模拟器B应用效果运行如下,左边标题页和上图主页上为同一个Fragment,当应用运行时数据却没有加载出来。
怀疑是应用启动时,有的方法没有正常执行,导致一部分应用数据没有加载。由于初始化操作是在onAttach()中完成的。查看代码,经编辑器提示,发现Fragment中的onAttach()有两个可供覆写的方法一个为onAttach(Activity activity),一个是onAttach(Context context),前者已经被废弃。我使用的是onAttach(Context context)。在代码中加入输出信息。
public void onAttach(Context context) { super.onAttach(context); initNews(); adapter = new NewsAdapter(context,R.layout.news_item,newsList); Log.d(TAG, "onAttach"); }
对比发现,当模拟器A运行应用时,onAttach(Context context),是正常执行的,一旦部署到模拟器B中运行,就不会执行此方法。用onAttach(Activity activity)替换onAttach(Context context)后,部署到模拟器A中,onAttach()正常执行,问题得到解决。