【问题标题】:setOnCheckedChangeListener argumentssetOnCheckedChangeListener 参数
【发布时间】:2014-06-11 18:59:44
【问题描述】:
    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 究竟是什么?它是一种方法吗?那么它的论点是什么?

【问题讨论】:

  • 它监听广播组的变化...所以它是一个方法,参数是在广播组发生变化时调用的事件处理程序。这里是匿名类。
  • 谢谢。我对此真的很陌生,另一种方法是该方法的参数似乎很令人困惑。

标签: java listener actionlistener anonymous-class


【解决方案1】:

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

想法是这样的:

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

  2. 无论何时更改选择,系统都会通知单选按钮。如果单选按钮设置了侦听器,则侦听器“侦听”事件 - 有一种机制通过调用其方法 onCheckedChanged()

  3. 来执行某些操作 1234563
  4. 需要new RadioGroup.OnCheckedChangeListener() 类来传递侦听器的行为 - 直到 Java 7 包括在内,你不能只传递一个没有类的方法。从 Java 8 开始,您可以使用 lambda expressions 更轻松地完成此操作,但现在不要打扰它。

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

您可以以简化的方式考虑它。您的代码含义如下:

亲爱的radioGroup,
每当支票被更改时,您应该做的事情是:

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

注意不要现在这样做,只有在检查已更改时才这样做!

【讨论】:

  • 感谢您的详细解释:)
猜你喜欢
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 2021-02-11
  • 1970-01-01
相关资源
最近更新 更多