使用事務通過show/hide切換Fragment(程式碼片段)----蘇蘇的小弟子
阿新 • • 發佈:2019-02-01
radioGroup = findViewById(R.id.rg); // 預設顯示第一個Fragment supportFragmentManager = getSupportFragmentManager(); fragment01 = new Fragment01(); FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); fragmentTransaction.add(R.id.frag, fragment01).commit(); // 切換Fragment radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { hideAllFragment(); FragmentTransaction f = supportFragmentManager.beginTransaction(); switch (i) { case R.id.rb1: f.show(fragment01).commit(); break; case R.id.rb2: if(fragment02==null){ fragment02 = new Fragment02(); f.add(R.id.frag,fragment02).commit(); }else{ f.show(fragment02).commit(); } break; caseR.id.rb3: if(fragment03==null){ fragment03 = new Fragment03(); f.add(R.id.frag,fragment03).commit(); }else{ f.show(fragment03).commit(); } break; } } }); } // 隱藏所有的Fragment public void hideAllFragment() { FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); if (fragment01 != null && fragment01.isAdded()) { fragmentTransaction.hide(fragment01); } if (fragment02 != null && fragment02.isAdded()) { fragmentTransaction.hide(fragment02); } if (fragment03 != null && fragment03.isAdded()) { fragmentTransaction.hide(fragment03); } fragmentTransaction.commit(); }