android - 添加后删除 fragment 不起作用

标签 android android-fragments checkbox fragment

我的问题是我想从 Activity 中删除一个 Fragment。有两个步骤:

  1. 通过选中 CheckBox,将 Fragment 添加到 FrameLayout (R.id.frame_for_des_details) 中。
  2. 通过单击 TextView 删除 Fragment

    public class CreateTripActivity extends FragmentActivity {
    
    //Vars for Destination Fragment
    private CheckBox checkBox;
    private DestinationDetailsFragment destinationDetailsFragment;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    //Setting the ContentView
    setContentView(R.layout.activity_create_trip);
    
    //Set the Destination Checkbox listener
    checkBox = (CheckBox) this.findViewById(R.id.checkBox_destination_now);
    

CheckBox 的监听器:

    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

            //Adding the Fragment. THIS WORK
            destinationDetailsFragment = new DestinationDetailsFragment();
            FragmentManager fm = getFragmentManager();
            fm.beginTransaction().add(R.id.frame_for_des_details, destinationDetailsFragment).commit();

        }
    });

TextView 的监听器:

    findViewById(R.id.label_later).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //Removing the Fragment. DOES NOT WORK
            FragmentManager fm = getFragmentManager();
            fm.beginTransaction().remove(destinationDetailsFragment).commit();              
        }
    });

    }

当我检查 CheckBox 时,我可以看到 fragment 。但是当我单击 TextView 将其删除时,它仍然存在。 当我一次又一次地检查 CheckBox 时,新的 Fragment 似乎覆盖了旧的 fragment ,因此我可以在 EditText 中覆盖占位符。

我希望有人理解我并能帮助我。

谢谢。

最佳答案

试试 android.support.v4.app.FragmentManager。这是代码。

        destinationDetailsFragment = new DestinationDetailsFragment();
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton,
                boolean b) {

            // Adding the Fragment. THIS WORK

            FragmentManager fm = getSupportFragmentManager();
            fm.beginTransaction()
                    .add(R.id.frame_for_des_details,
                            destinationDetailsFragment).commit();

        }
    });
    findViewById(R.id.label_later).setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    FragmentManager fm = getSupportFragmentManager();
                    fm.beginTransaction()
                            .remove(destinationDetailsFragment).commit();
                }
            });

关于android - 添加后删除 fragment 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450236/

相关文章:

java - Android - 如何将数据从主要 Activity 发送到加载的 fragment

android - 用于 fragment 的 JUnit

javascript - 如何将复选框转换为下拉列表?

javascript - jQuery 检查复选框是否被选中,然后将值添加到输入字段

android - 在内部存储器中创建文件夹以保存文件并在以后检索它们

android - 使用 BottomAppBar 或 BottomNavigationView 创建自定义底部 View

android - 在 ActionBar 上显示进度微调器(刷新)?

android - 键盘窗口SoftInputMode fragment

android - 如何在 Android 中使用 Intent 将 Activity 之间的数据传递给 fragment

checkbox - 如何在 struts 1.3 中的操作类中仅检索选定的复选框值