这种情况出现在你使用的Fragement切换时使用的是replace也就是这种
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fl_container,fragment,flag).commit();
但是这种方法原理是在切换的时候会杀死不显示的fragement,再切换回去时是又创建的新的,切换的多了 就会出现view控件紊乱的现象,
所以,我们来使用add,hide(隐藏)方法来避免这个问题
Fragment s=new Fragment ();
private void switchFragment(Fragment fragment,String fragmentname) { if (fragment != s) { if (!fragment.isAdded()) { fm.beginTransaction().hide(s).add(R.id.fl_main, fragment, fragmentname).commit(); } else { fm.beginTransaction().hide(s).show(fragment).commit(); } s = fragment; } }这样的弊端是,当切换时,未显示的界面会被放到容器里,有点耗费空间,等待下次切换回来时从容器内拿出来。