有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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;
            }
        }
    });

什么是放射组。setOnCheckedChangeListener是否每次都更改?这是一种方法吗?那么它的论点是什么呢


共 (1) 个答案

  1. # 1 楼答案

    setOnCheckedChangeListener()是一种方法,用于设置一个侦听特定动作的侦听器

    这个想法是:

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

    2. 当选择发生变化时,系统会通知单选按钮。如果单选按钮设置了侦听器,则侦听器“侦听”事件——有一种机制通过调用其方法onCheckedChanged()

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

    4. new RadioGroup.OnCheckedChangeListener()是传递侦听器的行为所必需的——在Java 7之前,不能只传递一个没有类的方法。由于Java 8,您可以使用lambda expressions更轻松地完成它,但现在不用麻烦了

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

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

    Dear radioGroup,
    the thing which you should do whenever the check has been changed is this:

    • if "horizontal" has been selected,
      call group.setOrientation(LinearLayout.HORIZONTAL)
    • if "vertical" has been selected,
      call group.setOrientation(LinearLayout.VERTICAL)

    N.B. Don't do it now, do it only when the check has been changed!