WanAndroidMaster icon indicating copy to clipboard operation
WanAndroidMaster copied to clipboard

请教一个问题

Open EFGL opened this issue 7 years ago • 3 comments

请教一个问题: 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(); }

EFGL avatar Nov 27 '18 07:11 EFGL

您好 很抱歉 最近才把项目忙完,是这样 这一句其实是为了保险起见我这样写,因为currentFragment.isAdded() 就会去判断是否已经添加过了,就不会进来的。都是通过 show hide 来控制的。当然您也可以不写。

yangmingchuan avatar Dec 20 '18 08:12 yangmingchuan

if (!currentFragment.isAdded()) getSupportFragmentManager().beginTransaction().remove(currentFragment).commit();

可能没理解您的意思 ,判断加了 “!”啊 ,不是没有添加过的意思吗?

EFGL avatar Dec 20 '18 08:12 EFGL

你可以 跟着 程序调试下多写换下Tab 看下这里判断的流程,其实就是保证 所有的界面都在 FragmentManager 保证 唯一,不然 会错乱。(另外我也是新手,如果您感觉有错 也可以指出)

yangmingchuan avatar Dec 21 '18 02:12 yangmingchuan