java.lang.IllegalStateException: No activity

来源:互联网 发布:grub windows引导丢失 编辑:程序博客网 时间:2024/05/26 12:54

出现场景

第一次启动程序可以正常运行,随便切换tab也不会有问题,第二次必崩

引起BUG的原因是
当fragment移动到分离状态的时候,会重置内部状态,但是并没有重置子类管理器(这是类库当前版本的错误),这会让fragment复位之后使它和activity不连接导致一个exception
解决办法是
添加 下面的代码对于每一个fragment在onDetach()方法里
    public void onDetach() {  
        super.onDetach();  
        try {  
            Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");  
            childFragmentManager.setAccessible(true);  
            childFragmentManager.set(thisnull);  
        } catch (NoSuchFieldException e) {  
            throw new RuntimeException(e);  
        } catch (IllegalAccessException e) {  
            throw new RuntimeException(e);  
        }  
    } 

0 0
原创粉丝点击