如何一次又一次地处理片段加载

时间:2018-07-22 08:47:49

标签: android

在我的应用中,我有导航底部,在导航上方有容器。我在一个容器中使用了多个片段。当我单击导航底部的项目时,我替换了要显示的片段。

这是我的代码,显示了容器中的片段

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();
}

但是我不知道,当我单击项目导航底部时如何处理,它总是一次又一次地加载片段。我要处理。如果加载了片段,我不想再次加载。

请帮助我

对不起,英语语法

1 个答案:

答案 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添加,以了解是否再次选择了当前项目。