Android:切换按钮打开:显示片段关闭:隐藏片段
Android: Toggle Button On: Show Fragment Off: Hide Fragment
我想切换按钮以在单击它时显示我的片段,并在我再次单击它以删除或隐藏我的片段时显示它。
基本上~开:显:隐藏
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Shower_fragment shower_fragment = new Shower_fragment();
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.linear_shower, shower_fragment, "Shower");
if(isChecked){
fragmentTransaction.show(shower_fragment);
fragmentTransaction.commit();
}else{
fragmentTransaction.hide(shower_fragment);
fragmentTransaction.commit();
}
}
我想你忘了调用 getFragmentManager();
Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
Shower_fragment shower_fragment = new Shower_fragment();
FragmentManager fm = getFragmentManager();
if(null == fm){return;}
if(isChecked)
{
fm.beginTransaction();
.add(R.id.linear_shower, shower_fragment, "Shower");
.show()
.commit();
}else
{
fm.beginTransaction();
.add(R.id.linear_shower, shower_fragment, "Shower");
.hide()
.commit();
}
}
有效,这样有效。 :D
~ 注意 Else 子句中的新片段对象。
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Shower_fragment shower_fragment = new Shower_fragment();
android.app.FragmentManager fragmentManager = getFragmentManager();
if( null == fragmentManager){
Toast.makeText(getApplication(), "Null Fragment Manager", Toast.LENGTH_LONG).show();
return;}
if(isChecked){
Toast.makeText(getApplication(),"If Clicked", LENGTH_SHORT).show();
fragmentManager.beginTransaction()
.add(R.id.linear_shower, shower_fragment, "Shower")
.show(shower_fragment)
.commit();
}else{
Toast.makeText(getApplication(), "Else Clicked", LENGTH_SHORT).show();
Shower_fragment shower_fragmentElse = (Shower_fragment) fragmentManager.findFragmentByTag("Shower");
fragmentManager.beginTransaction()
.hide(shower_fragmentElse)
.commit();
}
}
});
顺便说一句,你把 Override 方法放在哪里应该不是问题。
我想切换按钮以在单击它时显示我的片段,并在我再次单击它以删除或隐藏我的片段时显示它。 基本上~开:显:隐藏
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Shower_fragment shower_fragment = new Shower_fragment();
android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.linear_shower, shower_fragment, "Shower");
if(isChecked){
fragmentTransaction.show(shower_fragment);
fragmentTransaction.commit();
}else{
fragmentTransaction.hide(shower_fragment);
fragmentTransaction.commit();
}
}
我想你忘了调用 getFragmentManager();
Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
Shower_fragment shower_fragment = new Shower_fragment();
FragmentManager fm = getFragmentManager();
if(null == fm){return;}
if(isChecked)
{
fm.beginTransaction();
.add(R.id.linear_shower, shower_fragment, "Shower");
.show()
.commit();
}else
{
fm.beginTransaction();
.add(R.id.linear_shower, shower_fragment, "Shower");
.hide()
.commit();
}
}
有效,这样有效。 :D ~ 注意 Else 子句中的新片段对象。
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Shower_fragment shower_fragment = new Shower_fragment();
android.app.FragmentManager fragmentManager = getFragmentManager();
if( null == fragmentManager){
Toast.makeText(getApplication(), "Null Fragment Manager", Toast.LENGTH_LONG).show();
return;}
if(isChecked){
Toast.makeText(getApplication(),"If Clicked", LENGTH_SHORT).show();
fragmentManager.beginTransaction()
.add(R.id.linear_shower, shower_fragment, "Shower")
.show(shower_fragment)
.commit();
}else{
Toast.makeText(getApplication(), "Else Clicked", LENGTH_SHORT).show();
Shower_fragment shower_fragmentElse = (Shower_fragment) fragmentManager.findFragmentByTag("Shower");
fragmentManager.beginTransaction()
.hide(shower_fragmentElse)
.commit();
}
}
});
顺便说一句,你把 Override 方法放在哪里应该不是问题。