Android Fragment 重复添加异常: java.lang.IllegalStateException: Fragment already added 解决办法
在使用addFragment方法添加Fragment时,如果在Fragment已经添加到Activity中的情况下再次添加,就会出现上述异常。\n\n解决办法有两种:\n\n1. 在添加Fragment之前,先判断Fragment是否已经添加到Activity中。可以通过FragmentManager的findFragmentByTag方法或者findFragmentById方法来判断。\n\njava\nFragmentManager fragmentManager = getSupportFragmentManager();\nFragment fragment = fragmentManager.findFragmentByTag("TAG"); // 或者使用findFragmentById方法\nif (fragment == null) {\n\t// Fragment未添加,可以进行添加操作\n\tfragmentManager.beginTransaction()\n\t\t.add(R.id.fragment_container, new MyFragment(), "TAG") // 或者使用add方法的其他重载方法\n\t\t.commit();\n}\n\n\n2. 使用replace方法替代add方法来添加Fragment。replace方法会先移除之前的Fragment,然后再添加新的Fragment。\n\njava\ngetSupportFragmentManager().beginTransaction()\n\t.replace(R.id.fragment_container, new MyFragment())\n\t.commit();\n\n\n注意:使用replace方法替代add方法时,如果需要保留Fragment的状态,可以使用addToBackStack(null)方法将Fragment添加到返回栈中,这样在返回时会恢复Fragment的状态。\n\njava\ngetSupportFragmentManager().beginTransaction()\n\t.replace(R.id.fragment_container, new MyFragment())\n\t.addToBackStack(null)\n\t.commit();\n
原文地址: https://www.cveoy.top/t/topic/qla5 著作权归作者所有。请勿转载和采集!