簡體   English   中英

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方法的位置應該不成問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM