首页 > 解决方案 > FragmentManager 移除

问题描述

我在片段交互方面遇到了一些问题..

我在一个特定的活动上添加了四个片段..

代码如下:

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        SecAct_Foto_Fragment foto_fragment = new SecAct_Foto_Fragment();
        BUT_left_base_Fragment left_base_fragment = new BUT_left_base_Fragment();
        BUT_mid_base_Fragment mid_base_fragment = new BUT_mid_base_Fragment();
        BUT_right_base_Fragment right_base_fragment = new BUT_right_base_Fragment();

        getSupportFragmentManager().beginTransaction()
                .add(R.id.container_second, foto_fragment)
                .commit();

        getSupportFragmentManager().beginTransaction()
                .add(R.id.container_second, left_base_fragment)
                .add(R.id.container_second, mid_base_fragment)
                .add(R.id.container_second, right_base_fragment)
                .addToBackStack(null)
                .commit();
    }
}

然后我想在一个片段中删除所有这些按钮单击,每个片段都有自己的退出转换。

问题是片段没有被删除..我一直在阅读片段BackStack上的一些东西,但这似乎与它无关..

我无法弄清楚为什么没有删除碎片?

public class BUT_right_base_Fragment extends Fragment {

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

        View rootView = inflater.inflate(R.layout.right_base_fragment, container, false);

        Button button = (Button)rootView.findViewById(R.id.right_base_button);
        final BUT_left_base_Fragment but_left_base_fragment = new BUT_left_base_Fragment();
        final BUT_mid_base_Fragment but_mid_base_fragment = new BUT_mid_base_Fragment();
        final BUT_left_FShape_Fragment but_left_fShape_fragment = new BUT_left_FShape_Fragment();
        final BUT_mid_FShape_Fragment but_mid_fShape_fragment = new BUT_mid_FShape_Fragment();
        final BUT_right_FShape_Fragment but_right_fShape_fragment = new BUT_right_FShape_Fragment();

        //the remove transactions do not function
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getFragmentManager().beginTransaction()
                        .setCustomAnimations(R.anim.fade_in, R.anim.left_base_fshape)
                        .remove(but_left_base_fragment)
                        .setCustomAnimations(R.anim.fade_in, R.anim.mid_base_fshape)
                        .remove(but_mid_base_fragment)
                        .setCustomAnimations(R.anim.fade_in, R.anim.right_base_fshape)
                        .remove(but_right_base_fragment)
                        .addToBackStack(null)
                        .commit();

            }
        });

        return rootView;
    }
}

标签: androidandroid-fragments

解决方案


推荐阅读