使用RadioGroup和fragment搭建项目框架时,为RadioGroup添加监听事件,调用RadioGroup的check(int radiobuttonId)时,发现onCheckedChanged方法执行了两次
rg.setOnCheckedChangeListener(this);
rg.check(R.id.home);
运行代码发现以下方法执行两次
Log.e("TAG", "000000000000000000000"); //打印两次日志
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
switch (checkedId) {
case R.id.home :
position=0;
Log.e("TAG", "000000000000000000000");
break;
case R.id.diary :
position=1;
break;
case R.id.add :
position=2;
break;
case R.id.meizi :
position=3;
break;
case R.id.setting :
position=4;
break;
}
Log.e("TAG", "111111111111111111111111111");
switchFragment(mFragment,fragments.get(position));
}
解决方法:使用以下方法调用,则onCheckedChanged执行一次
rg.setOnCheckedChangeListener(this);
//rg.check(R.id.home);
((RadioButton) rg.findViewById(R.id.home)).setChecked(true);