我认为这个问题可能很简单,但对于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();
}
答案 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}}方法。