RadioGroup调用onCheckChanged()三次

21 android radio-group radio-button

我一直在努力解决RadioButton的程序性检查问题,RadioButton位于RadioGroup中.看起来单个check()调用会引发三个事件 - 一个用于第一个RadioButton,两个用于第二个,这是我的目标.同时点击界面中的第二个RadioButton只会出现一个事件,这是正确的.

那么,有没有办法避免多次事件提升?

public class RadiogroupActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        RadioGroup r = (RadioGroup) findViewById(R.id.radioGroup1);
        RadioButton b = (RadioButton) findViewById(R.id.radio1);
        r.setOnCheckedChangeListener(onPromobuttonsClick);
        r.check(R.id.radio1);

    }

    private OnCheckedChangeListener onPromobuttonsClick = new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            Log.d("x", "x");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 44

那么,有没有办法避免多次事件提升?

打电话b.setChecked(true);来.


快速浏览一下源代码,确认它RadioGroup#check()确实调用了OnCheckChangedListener三次......

  1. 取消选中当前选择时
  2. 当检查新的RadioButton时,和
  3. 当RadioGroup保存现在检查哪个RadioButton时.

奇怪的怪癖.