private void switchFragment(Fragment fragment) {
if (fragment != mTempFragment) { //如果相等不用做任何操作 所以加了此判斷
if (!fragment.isAdded()) { //判斷是否添加過該Fragment
getSupportFragmentManager().beginTransaction().hide(mTempFragment).add(R.id.fragment_container, fragment).commit(); //如果沒有添加過則添加
} else {
getSupportFragmentManager().beginTransaction().hide(mTempFragment).show(fragment).commit();//如果添加過則直接隱藏之前的Fragment并顯示出來
}
mTempFragment = fragment;
}
}
使用
//根據(jù)個人喜好哈 不做強制要求
mFragmentSparseArray = new SparseArray<>();
mFragmentSparseArray.append(R.id.today_tab, NavFunFragment.getInstance());
mFragmentSparseArray.append(R.id.record_tab, NavSearchFragment.getInstance());
mFragmentSparseArray.append(R.id.contact_tab, NavMessageFragment.getInstance());
mFragmentSparseArray.append(R.id.settings_tab, NavMeFragment.getInstance());
//默認顯示第一個
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, mTempFragment).commit();
mTabRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//使用方法
switchFragment(mFragmentSparseArray.get(checkedId));
}
});
效果
錄制軟件有點胡見諒哈