有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法删除另一个片段中的子片段

我在另一个中有一个片段,我成功地添加并提交了它,但当我想删除它时,它不起作用,而且总是在原来的位置

主要活性片段

public class MainActivityFragment extends Fragment {
    ScreenUtility screenUtility;

    public MainActivityFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_main, container, false);

        screenUtility = new ScreenUtility(getActivity());

        TotalAmountFragment totalAmountFragment;
        totalAmountFragment = new TotalAmountFragment();

        if (screenUtility.getOrientation() == 1){
            getChildFragmentManager()
                    .beginTransaction()
                    .add(R.id.main_total_amount_fragment_container, totalAmountFragment, "totalPrice")
                    .commit();
        } else if (screenUtility.getOrientation() == 2 && getChildFragmentManager().findFragmentByTag("totalPrice") != null){
            FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
            transaction.remove(totalAmountFragment);
            transaction.commit();
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
        }
        return v;
    }
}

XML文件

 ...
<FrameLayout
            安卓:id="@+id/main_total_amount_fragment_container"
            安卓:layout_width="match_parent"
            安卓:layout_height="wrap_content"
            安卓:foregroundGravity="center"
            安卓:layout_centerHorizontal="true"/>

我该怎么办?我想干什么就干什么


共 (2) 个答案

  1. # 1 楼答案

        if (screenUtility.getOrientation() == 1){
            getFragmentManager()
                    .beginTransaction()
                    .add(R.id.main_total_amount_fragment_container, totalAmountFragment, "totalPrice")
                    .commit();
        } else {
            Fragment priceFragment = getActivity().getSupportFragmentManager().findFragmentByTag("totalPrice");
            if (priceFragment != null){
                getActivity().getSupportFragmentManager().beginTransaction().remove(priceFragment).commit();
            }
        }
    
  2. # 2 楼答案

    试试这个代码

    FragmentManager fm = getActivity().getSupportFragmentManager();
    if (fm.getBackStackEntryCount() != 0) {
            fm.popBackStack();
        }