有 Java 编程相关的问题?

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

java如果我使用backstack到达第六个片段,如何删除第一个片段?

我只有一个片段,每次单击constraintLayout时都会创建它的实例。当我到达同一片段的第六个实例时,如何删除第一个片段实例?基本上,我的过程就像一个最大元素为5的数组,如果第六个元素进来,我想删除第一个元素。我使用了以下代码:

@Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        final View itemView = inflater.inflate(R.layout.product_fragment, container, false);
        TextView message = itemView.findViewById(R.id.message);
        ConstraintLayout product = itemView.findViewById(R.id.product);

        Bundle data = getArguments();
        if (data != null) {
            data_1 = Integer.parseInt(data.getString("data_1"));
            message.setText("" + data_1);
        }

        product.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (data_1 == 5){
                    if (getFragmentManager() != null) {
                        getFragmentManager().popBackStack("1", 0); //But this process will move you back to first fragment so this is incorrect.
                    }
                }

                data_1++;
                Fragment fragment = new ProductFragment();
                Bundle data = new Bundle();
                data.putString("data_1", String.valueOf(data_1));
                fragment.setArguments(data);
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.container, fragment);
                transaction.addToBackStack(String.valueOf(data_1));
                transaction.commit();
            }
        });
        return itemView;
    }

我使用了popBackStack(),因为我认为它类似于数组中的pop()方法。有没有办法做到这一点


共 (1) 个答案

  1. # 1 楼答案

    片段后栈是stack;唯一可以操作的片段是最上面的片段。这意味着,如果不同时移除堆栈上的所有碎片,就无法深入堆栈并移除最底部的碎片