Android开发,使用切换按钮关闭片段

时间:2015-12-04 19:53:23

标签: android android-fragments fragment togglebutton

我认为这个问题可能很简单,但对于Java和Android开发人员来说还不是新手,我不太确定。我要做的是关闭一个使用ToggleButton切换的片段,但我找不到隐藏或关闭它的方法。任何帮助将不胜感激。

下面是OnCheckChanged()侦听器的代码。

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

    MyFragment frag = new MyFragment();
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();

    transaction.add(R.id.main_activity, frag, "Fragment1");

    if(isChecked)
    {
        transaction.show(frag);
    }
    else
    {
        transaction.hide(frag);
        //transaction.remove(frag);
    }

    transaction.commit();
}

1 个答案:

答案 0 :(得分:0)

每次点击onCheckedChanged时,您都会添加 NEW 片段,然后隐藏或显示它。您之前创建的所有其他片段仍然是一个放在另一个之上。

如果存在,则应该获取附加到布局的当前片段。如果还没有,请创建它并将其添加到容器中。

例如,这应该指向正确的方向。

private void HideFragment(){

    // Get the fragment that is attached to the layout
    Fragment frag=getFragmentManager().findFragmentById(R.id.centerFrame);

    if (frag==null){
        // The fragment does not exist yet so create one and add it
        frag=new MyFragment();
        getFragmentManager()
                .beginTransaction()
                .replace(R.id.centerFrame,frag)
                .commit();
    }

    //Hide the fragment
    getFragmentManager()
            .beginTransaction()
            .hide(frag)
            .commit();


}

<强>更新 你实际上想要达到的目标有点模棱两可。你一直在说&#34;关闭&#34;片段,但您的代码建议您只想打开和关闭其可见性。

如果您确实想要完全删除片段,那么您应该使用Remove的{​​{1}}方法。