setOnCheckedChangeListener参数

时间:2014-06-11 18:59:44

标签: java listener actionlistener anonymous-class

    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?这是一种方法吗?那么它的论点是什么?

1 个答案:

答案 0 :(得分:3)

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

这个想法是这样的:

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

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

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

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

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

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

      

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

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

    N.B。 不要这样做现在,只有在检查更改后才