我有一个包含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