好久没有写博客了,今天bug解决的头晕,把之前遇到的问题总结下吧.
底部导航就不上代码了,搜下BottomNavigationBar+viewpager出来一堆,而且还是一模一样,这在下就没什么好说的,大致的问题是这样的,导航栏里有一个fragment种嵌套了两个fragment,用com.flyco.tablayout.CommonTabLayout,在fragment中做了个顶部导航,第一次切换是没什么问题的,第二次app就会崩溃.
java.lang.IllegalStateException: Fragment already added: ContactFragment{ac15300 #4 id=0x7f080092}
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1886)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:760)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2591)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2378)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2333)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2240)
看了网上的一些答案没有自己想要的,没办法只能靠自己了
@Override
protected void initView(View rootView) {
viewById = (CommonTabLayout) rootView.findViewById(R.id.t1);
viewById1 = (FrameLayout) rootView.findViewById(R.id.fl);
}
@Override
protected void initData() {
mFragment.add(ContactFragment.newInstance());
mFragment.add(MainFragmentTwo.newInstance());
//设置tab的标题、选中图标、未选中图标
for (int i = 0; i < TITLE.length; i++) {
mTabEntities.add(new TabEntity(TITLE[i], 0, 0));
}
//给tab设置数据和关联的fragment
viewById.setTabData(mTabEntities,getActivity(), R.id.fl, mFragment);
}
用的控件代码比较少,emmm完全没看出来,想了下,既然报出了这个错误,那肯定是添加了两次了,那我加个判断了,当mfragment==null时才进行添加的操作,当!=null时就不做任何操作.这样来回切换就没有报错误了