• Fragment XXX not attached to Activity


    • 直接切入主题。出现这个问题后,我们定位到代码中的位置一般是getString或者getResources导致的!
    • 既然是Fragment出现的问题。我们直接定位到Fragment的源代码,检索错误的字符串,马上我们可以看到Fragment的getResources()方法(getString最终也会调用这个方法),如下
       /**
         * Return <code>getActivity().getResources()</code>.
         */
        final public Resources getResources() {
            if (mHost == null) {
                throw new IllegalStateException("Fragment " + this + " not attached to Activity");
            }
            return mHost.getContext().getResources();
        }
    
    • 从上面的代码中我们可以明白,抛出异常的原因是mHost == null,而这个mHost会在Fragment被回收后置为null(详细的细节可以查看FragmentManager这个类),出现这种状况是由于我们退出当前Fragment后某个线程还调用getString等方法
    • 所以如果Fragment被回收后我们再调用这个方法,就会抛出这个异常

    解决方案:

    1.错误已经和明显的指出not attached to Activity了,所以我们在调用getString等方法前需要判断一下Fragment是否已经add到Activity中(通过Fragment的isAdded方法)
    2.直接在Fragment创建的时候通过getActivity获取Activity上下文对象赋值给成员变量,后面直接用即可



    作者:android_cyw
    链接:https://www.jianshu.com/p/a8af13abe405
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    页面打开 抛出w3wp.exe 中发生未处理异常
    link
    带下拉子菜单的导航菜单
    横向列表菜单
    Codeforces Round #640 (Div. 4)
    【剑指Offer】06. 从尾到头打印链表
    【剑指Offer】65. 不用加减乘除做加法
    【剑指Offer】15. 二进制中1的个数
    【剑指Offer】03. 数组中重复的数字(哈希)
    【LeetCode】50. Pow(x, n)(快速幂)
  • 原文地址:https://www.cnblogs.com/ldq2016/p/12973532.html
Copyright © 2020-2023  润新知