在我的应用中,我有导航底部,在导航上方有容器。我在一个容器中使用了多个片段。当我单击导航底部的项目时,我替换了要显示的片段。
这是我的代码,显示了容器中的片段
private void showFragment(String tabType) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
baseTabBottomFragment = new BaseTabBottomFragment();
//send data to fragment
Bundle bundle = new Bundle();
bundle.putString(KeyConstant.TAB_BOTTOM, tabType);
baseTabBottomFragment.setArguments(bundle);
ft.add(R.id.frame_container, baseTabBottomFragment, tabType);
ft.addToBackStack(tabType);
ft.commit();
}
但是我不知道,当我单击项目导航底部时如何处理,它总是一次又一次地加载片段。我要处理。如果加载了片段,我不想再次加载。
请帮助我
对不起,英语语法
答案 0 :(得分:1)
1-您可以使用该标签tabType
进行游戏,例如:
String prevTab = "";
private void showFragment(String tabType) {
if(!tabType.equal(prevTab)){
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
baseTabBottomFragment = new BaseTabBottomFragment();
//send data to fragment
Bundle bundle = new Bundle();
bundle.putString(KeyConstant.TAB_BOTTOM, tabType);
baseTabBottomFragment.setArguments(bundle);
ft.add(R.id.frame_container, baseTabBottomFragment, tabType);
ft.addToBackStack(tabType);
ft.commit();
}
prevTab = tabType;
}
2-或者从您的BottomNavigationView
中,您可以检查选定的商品ID,例如:
if (bottomNav.getSelectedItemId() != R.id.someMenuId)
//替换片段
3-或使用onNavigationItemReselcted
从Api 26添加,以了解是否再次选择了当前项目。