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()
是一个方法,它设置listener它监听特定的操作。
这个想法是这样的:
您希望单选按钮在用户更改选择时执行某些操作。
每当选择发生更改时,系统都会通知单选按钮。如果单选按钮设置了侦听器,则侦听器“侦听”事件 - 有一种机制可以通过调用其方法来执行某些操作onCheckedChanged()
您应该意识到onCheckedChanged()
在事件发生时调用,而不是在侦听器传递给setOnCheckedChangeListener()
方法 - 所以不在您的代码示例被调用时!
班上new RadioGroup.OnCheckedChangeListener()
需要传递听众的行为- 在 Java 7 之前,您不能仅传递没有类的方法。从 Java 8 开始,您可以使用更轻松地完成它lambda 表达式 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html,但现在不用担心。
这是一个相当高级的主题,我建议您先学习一下:
- 监听器设计模式(又名观察者) http://en.wikipedia.org/wiki/Observer_pattern
- 匿名类 http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
你可以用简化的方式来思考。您的代码含义如下:
Dear radioGroup
,
每当支票发生更改时,您应该做的事情是:
- 如果选择“水平”,
call group.setOrientation(LinearLayout.HORIZONTAL)
- 如果选择“垂直”,
call group.setOrientation(LinearLayout.VERTICAL)
N.B. Don't do it now, do it 只有当支票已更改!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)