记录下自己整过的代码
private NetUtil util;
private List<MainFragmentInfo> mFragments;
private ShareFragment mShareFragment;
private HomeFragment mHomeFragment;
private FindFragment mFindFragment;
private PersonFragment mPersonFragment;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_main);
mFragments = new ArrayList<>();
mShareFragment = new ShareFragment();
mFragments.add(new MainFragmentInfo(mShareFragment, 0));
mRg.check(R.id.main_rb_share);
switchFragment(0);
mRg.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.main_rb_share:
mTvChangeInfo.setVisibility(View.GONE);
if (null == mShareFragment) {
mShareFragment = new ShareFragment();
mFragments.add(new MainFragmentInfo(mShareFragment, 0));
}
switchFragment(0);
break;
case R.id.main_rb_home:
mTvChangeInfo.setVisibility(View.GONE);
if (null == mHomeFragment) {
mHomeFragment = new HomeFragment();
mFragments.add(new MainFragmentInfo(mHomeFragment, 1));
}
switchFragment(1);
break;
case R.id.main_rb_find:
mTvChangeInfo.setVisibility(View.GONE);
if (null == mFindFragment) {
mFindFragment = new FindFragment();
mFragments.add(new MainFragmentInfo(mFindFragment, 2));
}
switchFragment(2);
break;
case R.id.main_rb_me:
mTvChangeInfo.setVisibility(View.VISIBLE);
if (null == mPersonFragment) {
mPersonFragment = new PersonFragment();
mFragments.add(new MainFragmentInfo(mPersonFragment, 3));
}
switchFragment(3);
break;
}
}
/**
* 选中某个Fragment
*/
private void switchFragment(int index) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//遍历集合
for (int i = 0; i < mFragments.size(); i++) {
Fragment fragment = mFragments.get(i).getFragment();
int fIndex = mFragments.get(i).getIndex();
//要选中的fragment和集合中的标记一样,就show出来
if (index == fIndex) {
if (fragment.isAdded()) {
transaction.show(fragment);
} else {
transaction.add(R.id.main_frame, fragment);
}
} else {
if (fragment.isAdded()) {
transaction.hide(fragment);
}
}
}
transaction.commit();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
AppManager.finishAllActivity();
return true;
}
return false;
}
public class MainFragmentInfo {
private Fragment fragment;
private int index;
public MainFragmentInfo(Fragment fragment, int index) {
this.fragment = fragment;
this.index = index;
}
public Fragment getFragment() {
return fragment;
}
public void setFragment(Fragment fragment) {
this.fragment = fragment;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}