setOnCheckedChangeListener参数

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.orientation); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.horizontal: group.setOrientation(LinearLayout.HORIZONTAL); break; case R.id.vertical: group.setOrientation(LinearLayout.VERTICAL); break; } } }); 

什么是radioGroup.setOnCheckedChangeListener? 这是一种方法吗? 那么它的论点是什么?

setOnCheckedChangeListener()是一个设置侦听特定操作的侦听器的方法。

这个想法是这样的:

  1. 您希望单选按钮在用户更改选择时执行某些操作。

  2. 无论何时更改选择,系统都会告诉单选按钮。 如果单选按钮具有侦听器集,则侦听器“侦听”该事件 – 有一种机制通过调用其方法onCheckedChanged()来执行某些操作

  3. 您应该意识到onCheckedChanged()在事件发生的那一刻被调用,而不是在将侦听器传递给setOnCheckedChangeListener()方法时 – 所以在调用代码示例时不会!

  4. 需要new RadioGroup.OnCheckedChangeListener()类来传递侦听器的行为 – 包括Java 7,你不能只传递一个没有类的方法。 从Java 8开始,您可以使用lambda表达式更轻松地完成它,但现在不要理会它。

这是一个非常高级的话题,我建议你先研究一下:

  • 监听器设计模式(又名观察者)
  • 匿名课程

你可以用简化的方式思考它。 您的代码具有以下含义:

亲爱的radioGroup
每当检查更改时你应该做的事情是这样的:

  • 如果选择“水平”,
    call group.setOrientation(LinearLayout.HORIZONTAL)
  • 如果选择“垂直”,
    call group.setOrientation(LinearLayout.VERTICAL)

注意 现在不要这样做, 只有在检查改变后再做!