底部导航栏上的多次点击未按预期发生
底栏有5个标签
每个标签选择都会弹出标签并推送标签
点击片段A - >点击片段B,重复两到五次。
例如:
点按A. - >从堆栈中弹出A. - >将A推送到堆栈 点按B - >来自Stack的pop B. - >把B推到堆叠
行为: 默认情况下加载一个片段,点击B导航到B,稍后点击A转到A,此时返回按app关闭。
预计: 结果应该是这样的 默认情况下加载一个片段,点击B导航到B,稍后点击A转到A,这里当按下它时它应该转到B并且反压转到A然后反压关闭应用程序。
case FragmentA:
fragmenta = new FragmentA();
getSupportFragmentManager().popBackStack(FragmentReferenceTags.FragmentA, FragmentManager.POP_BACK_STACK_INCLUSIVE); // returns False - can't find the tag!
transaction.add(R.id.fragment_container_layout, fragmenta, FragmentReferenceTags.FragmentA);
transaction.addToBackStack(FragmentReferenceTags.FragmentA);
transaction.commit();
hideSubTabs();
break;
case FragmentB:
fragmentb = new FragmentB();
getSupportFragmentManager().popBackStack(FragmentReferenceTags.FragmentB, FragmentManager.POP_BACK_STACK_INCLUSIVE); // returns False - can't find the tag!
transaction.add(R.id.fragment_container_layout, fragmentb, FragmentReferenceTags.FragmentB);
transaction.addToBackStack(FragmentReferenceTags.FragmentB);
transaction.commit();
hideSubTabs();
break;
答案 0 :(得分:0)
使用replace
代替add
:
transaction.replace(R.id.fragment_container_layout, fragmentb, FragmentReferenceTags.FragmentB);
transaction.addToBackStack(null);