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 楼答案
片段后栈是stack;唯一可以操作的片段是最上面的片段。这意味着,如果不同时移除堆栈上的所有碎片,就无法深入堆栈并移除最底部的碎片