每次我运行我的代码时都会出现此错误
java.lang.IllegalStateException:已添加片段:MyFragment {19704129#4 id = 0x7f0e0077}
这是代码
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
if (!myFragment.isAdded())
transaction.add(R.id.container, myFragment, myFragment.getTag());
transaction.commit();
什么?为什么?怎么样?
答案 0 :(得分:0)
碎片可以添加到活动中,但不可见。默认情况下,Fragment
可见。
是否在活动中添加或分离片段与可见性无关。您只能添加一次片段。
如果您试图控制特定片段的可见性,则可以使用其他方法来执行此操作。如果这是为了在不同的片段之间切换,我建议你看一下隐藏的状态。
http://developer.android.com/reference/android/app/Fragment.html#isHidden()
答案 1 :(得分:0)
好像很多人都遇到过这个问题。同样的问题不断出现,只有一个人找到了合理的答案。
提交调用实际上并未将您的片段添加到活动中。它将请求排队以供稍后处理。如果对新片段的第二个请求在提交请求之前排队,isAdded() 将返回 false,并且第二个添加片段的请求将排队,并抛出重复的片段异常。
干净的解决方案是在检查是否已添加片段之前调用 FragmentManager.executePendingTransactions()。