0

我有两个片段,我需要保留它们,但在按钮点击时显示和隐藏。

我使用以下方法添加了第一个片段:

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() 因为我想重用这两个片段。

希望有人可以帮助我。

4

1 回答 1

1

您的片段应该使用 getSupportFragmentManager() 而不是 if 结构中的 getFragmentManager Method() 来搜索您的片段。

顺便说一句,那个 R.id.dish_fragment 对象是什么?一个片段?一个容器?它应该是一个类似于 LinearLayout 的容器。

于 2013-08-21T16:02:35.533 回答