Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RadioGroup在onCheckedChanged中没有响应_Android_Radio Group - Fatal编程技术网

Android RadioGroup在onCheckedChanged中没有响应

Android RadioGroup在onCheckedChanged中没有响应,android,radio-group,Android,Radio Group,我有以下代码: private void inflateCustomView() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View customNav = inflater.inflate(R.layout.custom_view, null); //Bind to its state change Ra

我有以下代码:

private void inflateCustomView()
    {
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View customNav = inflater.inflate(R.layout.custom_view, null);

    //Bind to its state change
    RadioGroup radioGrp = ((RadioGroup)customNav.findViewById(R.id.radio_nav));
    radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId)
        {
            switch(checkedId)
            {
            case R.id.moneyRadioBtn:
                    isInCashMode = true;
                    break;
            case R.id.unitRadioBtn:
                    isInCashMode = false;
                    break;
            }

            setCashOrUnits(isInCashMode);
        }
    });

    //Attach to the action bar
    getSupportActionBar().setCustomView(customNav);
    getSupportActionBar().setDisplayShowCustomEnabled(true);

    }
似乎已正确添加自定义视图,但从未调用onCheckedChanged。我尝试在onCheckedChanged中插入断点,但从未达到。我做错了什么

编辑: 下面是自定义视图的XML

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="left|center_vertical"
    android:orientation="horizontal"
    >
    <RadioGroup
        android:id="@+id/radio_nav"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
        <RadioButton
            android:id="@+id/moneyRadioBtn"
            android:text="Kr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"

        />
        <RadioButton
            android:id="@+id/unitRadioBtn"
            android:text="Enheder"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
        />
    </RadioGroup>
</LinearLayout>

检查以下代码

    RadioGroup radioGrp = ((RadioGroup)customNav.findViewById(R.id.radio_nav));
int checkedRadioButtonID = radioGrp.getCheckedRadioButtonId();
            radioGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
            {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId)
                {
                    switch(checkedId)
                    {
                    case R.id.moneyRadioBtn:
                            isInCashMode = true;
                            break;
                    case R.id.unitRadioBtn:
                            isInCashMode = false;
                            break;
                    }

                    setCashOrUnits(isInCashMode);
                }
            });
注意

radioGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()

希望,这有帮助。

您也可以这样检查

radioGrp.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(RadioGroup arg0, int arg1) {

        RadioButton radioButton = (RadioButton) findViewById(radioGroup
                .getCheckedRadioButtonId());
        if (radioButton.getText().equals("radiobutton name")) {
            isInCashMode = true;
        } else {
            isInCashMode = false;
        }
    }
});

试试看。它可能会对您有所帮助。

您可能应该将其粘贴到XML布局中,有时可能会出现一些问题,使广播组无法选择其中的按钮

我已经有一段时间没有与他们合作了,但我相信XML中的按钮必须直接位于XML中父RadioGroup的下面,因此,例如,如果您在RadioGroup中的LinearLayout中有一个RadioButton,RadioGroup将不会拾取按钮,因为它不是直接的子项

编辑:另一种方法是获取代码中每个单选按钮的引用,定义一个CompoundButton.OnCheckedChangeListener来处理事件,然后调用

myRadioButton.setOnCheckedChangeListener(myOnCheckChangeListener);

对他们每个人来说。有点笨拙(您必须在onCheckedChanged()方法中手动获取选中视图的id),但它可以工作

我今天遇到了这个问题,看起来很荒谬:

它需要CheckBox.OnCheckedChangeListener。RadioGroup公然拒绝接受RadioGroup.OnCheckedChangeListener,但使用复选框one可以正常工作


我甚至不知道发生了什么,但它是这样工作的。几乎没有。

您确定您正在使用RadioGroup.OnCheckedChangeListener。请使用新的RadioGroup.OnCheckedChangeListener()而不是仅使用新的OnCheckedChangeListener()。我看到有人在这里有同样的问题:我尝试了这个,但什么都没有。也许是因为我不理解团队和听众的复杂性。布局膨胀和无法设置膨胀视图的侦听器可能是一个问题吗?或者是ActionBar覆盖了对它的“点击”吗?你可能想把这变成它自己的问题。你的XML肯定有问题