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()是一种设置 侦听 器的方法,该 侦听 器侦听特定的动作。
setOnCheckedChangeListener()
这个想法是这样的:
您希望单选按钮在用户更改选择时执行某些操作。
只要更改了选择,系统就会通知单选按钮。如果单选按钮设置了侦听器,则侦听器“侦听”事件-有一种机制可以通过调用其方法来执行某些操作onCheckedChanged()
onCheckedChanged()
您应该意识到,在onCheckedChanged()事件发生的那一刻就调用了,而不是在将侦听器传递给setOnCheckedChangeListener()方法的时候被调用了-因此在您的代码示例被调用时就没有了!
new RadioGroup.OnCheckedChangeListener()需要类来传递侦听器的 行为 -直到Java 7(包括Java 7)为止,如果没有类,就不能仅传递方法。从Java 8开始,您可以使用lambda表达式更轻松地实现它,但是现在就不用理会它。
new RadioGroup.OnCheckedChangeListener()
这是一个相当高级的主题,我建议您首先学习以下内容:
您可能会以简化的方式考虑它。您的代码具有以下含义:
亲爱的radioGroup, 每当支票被更改时,您应该做的事情是: 如果选择了“水平”, 请致电group.setOrientation(LinearLayout.HORIZONTAL) 如果选择了“垂直”,则 调用group.setOrientation(LinearLayout.VERTICAL) 注意 : 现在 不要 执行此操作, 仅在 更改支票 后才可以执行 !
亲爱的radioGroup, 每当支票被更改时,您应该做的事情是:
radioGroup
group.setOrientation(LinearLayout.HORIZONTAL)
group.setOrientation(LinearLayout.VERTICAL)
注意 : 现在 不要 执行此操作, 仅在 更改支票 后才可以执行 !