我有两个片段,我需要保留它们,但显示和隐藏按钮点击。
我使用以下方法添加了第一个片段:
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”上有一个后退按钮,其中show()向上显示第一个片段“DishFragment”。 第二次,因为我们之前已经添加了“Ordersummaryfragment”,所以findFragmentByTag应该返回OrderSummaryFragment,但它会返回null。
注意:我没有使用replace()因为我想重用这两个片段。
希望有人可以帮助我。
答案 0 :(得分:1)
您的片段应使用getSupportFragmentManager()而不是if结构中的getFragmentManager Method()来搜索您的片段。
顺便说一句,这是什么R.id.dish_fragment对象?一个片段?一个容器?它应该是像LinearLayout这样的容器。