2 u011371270 u011371270 于 2016.05.11 13:55 提问

fragment+viewpager可以运行,但是会报一个错误 50C

我用framement+viewpager做了三个页面的切换,调试之后在手机上可以运行,但是每次切换界面都会报如下错误
moveToState: Fragment state for CustomerInf{55de94e #1 id=0x7f0c005d android:switcher:2131492957:0} not updated inline; expected state 3 found 2
其中粗体部分是一个是其中一个fragment
我总共有三个CustomerInf,按在viewpage中的顺序为CustomerInf,EquipInf,和FAQ,它报错的时候总是报相邻的错误,比如当我从CustonInf切换到EquipInf,系统就是提示Fragment state for FQAnot updated inline,但我再从EquipInf切换到FAQ的时候就不会有问题,
我怀疑是viewpage储存的问题,但就是搞不懂。。
所以。。这到底怎么回事?另外,会有什么影响?因为我现在就只是放了三个不同的fragment,还没开始在fragment之前传数据,现在只是表面上看起来没什么问题,不知道以后会不会影响其他功能?谢谢!

2个回答

q610098308
q610098308   2016.05.11 14:18

在activity中不同的frament之间项目替换的时候,FragmentManager只会remove和add这些frament,然而这些frament里面自己加载的frament(这里就是我们的CaptionPropertiesFragment)是没有被remove. 很显然这是一个缺陷!因为后一个frament(CaptionPropertiesFragment)很明显是依赖与他的父frament的,应该同时递归的remove.

那么如何解决这个问题呢!很显然就是在不用这个frament(ToggleCaptioningPreferenceFragment)的时候把他里面加载的frament给remove掉!这个操作在ToggleCaptioningPreferenceFragment的onDestroyView()里面就可以解决问题了!如下代码:

@Override
public void onDestroyView() {
super.onDestroyView();

if(mPropsFragment != null){
  FragmentManager f = getFragmentManager();
  if(f != null && !f.isDestroyed()){
    final FragmentTransaction ft = f.beginTransaction();
    if(ft != null){
      ft.remove(mPropsFragment).commit();
    }
  }
}

}

这里要注意f.isDestroyed()这样来判断是否这个FragmentManager处于Destroyed,如果不加这个判断的话,横竖屏切换时候会出错!

u014645509
u014645509   2017.08.16 15:00

这个问题你解决了吗?

qq_17058993
qq_17058993 解决了吗 ? 我这个卡顿
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!