我有两个片段,我需要保留它们,但在按钮点击时显示和隐藏。
我使用以下方法添加了第一个片段:
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
mDishFragment = new DishFragment();
transaction.add(R.id.dish_fragment, mDishFragment, "DishFragment");
transaction.commit();
第一个片段(DishFragment)有一个点击按钮,代码检查“OrderSummaryFragment”是否存在(使用findFragmentbyTag),如果存在,它应该显示()它否则添加()一个新的。这是代码:
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
if (getFragmentManager().findFragmentByTag("OrderSummaryFragment") == null) {
System.out.println("OrderSummaryFragment not found");
transaction.add(R.id.dish_fragment, mOrderSummaryFragment,"OrderSummaryFragment");
System.out.println("Orderfragment added");
transaction.addToBackStack(null);
transaction.commit();
}else{
System.out.println("OrderSummaryFragment found");
transaction.hide(mDishFragment);
transaction.show(mOrderSummaryFragment);
transaction.commit();
}
自从“OrderSummaryFragment”不存在以来,代码第一次添加了一个并显示出来。在“OrderSummaryFragment”上有一个后退按钮,按下该按钮显示()到第一个片段“DishFragment”。第二次,由于我们之前已经添加了“Ordersummaryfragment”,所以 findFragmentByTag 应该返回 OrderSummaryFragment 但它返回 null。
注意:我没有使用 replace() 因为我想重用这两个片段。
希望有人可以帮助我。