请教一个问题
请教一个问题: if (!currentFragment.isAdded())
getSupportFragmentManager().beginTransaction().remove(currentFragment).commit();
为什么判断了没有添加过currentFragment,还要去remove(currentFragment)
private void selectFragment(int index) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment currentFragment = fragmentList.get(index); Fragment lastFragment = fragmentList.get(lastIndex);// 上一次显示的Fragment lastIndex = index; ft.hide(lastFragment); if (!currentFragment.isAdded()) { getSupportFragmentManager().beginTransaction().remove(currentFragment).commit(); ft.add(R.id.frame_layout, currentFragment); } ft.show(currentFragment); ft.commitAllowingStateLoss(); }
您好 很抱歉 最近才把项目忙完,是这样 这一句其实是为了保险起见我这样写,因为currentFragment.isAdded() 就会去判断是否已经添加过了,就不会进来的。都是通过 show hide 来控制的。当然您也可以不写。
if (!currentFragment.isAdded()) getSupportFragmentManager().beginTransaction().remove(currentFragment).commit();
可能没理解您的意思 ,判断加了 “!”啊 ,不是没有添加过的意思吗?
你可以 跟着 程序调试下多写换下Tab 看下这里判断的流程,其实就是保证 所有的界面都在 FragmentManager 保证 唯一,不然 会错乱。(另外我也是新手,如果您感觉有错 也可以指出)