((RadioButton)mRg.getChildAt(position)).setChecked(true);
initListener();
}
private void initListener() {
mRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton) group.findViewById(checkedId);
if (false == radioButton.isChecked()) {
return;
}
switch (checkedId) {
case R.id.rb_home:
position = 0;
break;
case R.id.rb_course:
position = 1;
break;
case R.id.rb_direct_seeding:
position = 2;
break;
case R.id.rb_me:
position = 3;
break;
default:
position = 0;
break;
}
LUtils.i(“position==” + position);
Fragment to = mFragments.get(position);
showFragment(mCurFragment, to);
mCurFragment = to;
}
});
}
private void showFragment(Fragment from, Fragment to) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = supportFragmentManager.beginTransaction();
if (!to.isAdded()) { // 先判断是否被add过
transaction.hide(from).add(R.id.fl, to).commit(); // 隐藏当前的fragment,add下一个到Activity中
} else {
transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个
}
}
/**
-
这个方法用老替换fragment
-
xujun
-
2016/5/3 17:28.
*/
private void replaceFragment(Fragment fragmeny) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fl, fragmeny).commit();
}
}
思路解析
-
实例化各个控件,这里代码就不贴出来了
-
初始化 Fragemnt 和选中各个tab
mFragments = new ArrayList<>();
for (int i = 0; i < mTiltles.length; i++) {
ItemFragement itemFragement = ItemFragement.newInstance(mTiltles[i]);
mFragments.add(itemFragement);
}
mCurFragment = mFragments.get(position);
replaceFragment(mCurFragment);
((RadioButton)mRg.getChildAt(position)).setChecked(true);
private void replaceFragment(Fragment fragmeny) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fl, fragmeny).commit();
}
- 第三步,通过监听RadioGroup的 OnCheckedChangeListener事件,来实现tab和Fragemnt的切换
mRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton) group.findViewById(checkedId);
if (false == radioButton.isChecked()) {
return;
}
switch (checkedId) {
case R.id.rb_home:
position = 0;
break;
case R.id.rb_course:
position = 1;
break;
case R.id.rb_direct_seeding:
position = 2;
break;
case R.