关于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()正常执行,问题得到解决。

原文地址:https://www.cnblogs.com/witchiman/p/5136697.html