java.lang.IllegalStateException:无法更改片段的容器ID有时会出现

时间:2017-05-03 07:07:17

标签: java android android-fragments android-framelayout

我有一个包含viewPager和tabLayout的主要活动。 在tabLayout上我设置了以下代码:

@Override
            public void onTabReselected(TabLayout.Tab tab) {
                setToolbarIcon(0);
                setToolbarMode(0);
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.view_container,pageFragment[tab.getPosition()]);
                fragmentTransaction.commit();
            }

pageFragment = new Fragment[5]{new fragmentA(),new fragmentB(),new fragmentC(), new fragmentD(), new fragmentE()};

所以,我收到错误java.lang.IllegalStateException: Can't change container ID of fragment FragmentNewsfeed{c897339 #0 id=0x7f0d0083 android:switcher:2131558531:0}: was 2131558531 now 2131558601

但奇怪的是,如果我将fragmentTransaction.replace(R.id.view_container,pageFragment[tab.getPosition()]);更改为fragmentTransaction.replace(R.id.view_container,new someFragment());它工作正常,之后如果我将其恢复为第一版代码,它也能正常工作。让我发疯的原因有时会出现错误,有时错误会消失。我试图在替换之前删除片段,但它不起作用。

那我该怎么办?为什么问题有时出现但有时却没有?

注意:R.id.view_container是我在每个Fragment中为父FrameLayout添加的id

0 个答案:

没有答案