使用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);